Linux下查看進程和線程

來源:互聯網
上載者:User

轉自:http://blog.csdn.net/wind19/article/details/7054336

查看進程

1. top 命令

top命令查看系統的資源狀況

  load average表示在過去的一段時間內有多少個進程企圖獨佔CPU

  zombie 進程 :不是異常情況。一個進程從建立到結束在最後那一段時間遍是殭屍。留在記憶體中等待父進程取的東西便是殭屍。任何程式都有殭屍狀態,它佔用一點記憶體資源,僅僅是表象而已不必害怕。如果程式有問題有機會遇見,解決大批量殭屍簡單有效辦法是重起。kill是無任何效果的stop模式:與sleep進程應區別,sleep會主動放棄cpu,而stop是被動放棄cpu ,例單步跟蹤,stop(暫停)的進程是無法自己回到運行狀態的。

  cpu states:

  nice:讓出百分比irq:中斷處理佔用

  idle:空間佔用百分比 iowait:輸入輸出等待(如果它很大說明外存有瓶頸,需要升級硬碟(SCSI))

  Mem:記憶體情況

  設計思想:把資源省下來不用便是浪費,如添加記憶體後free值會不變,buff值會增大。 判斷實體記憶體夠不夠,看交換分區的使用狀態。

  互動命令:

  [Space]立即重新整理顯示

  [h]顯示協助螢幕

  [k] 殺死某進程。你會被提示輸入進程 ID 以及要發送給它的訊號。 一般的終止進程可以使用15訊號;如果不能正常結束那就使用訊號9強制結束該進程。預設值是訊號15。在安全模式中此命令被屏蔽。

  [n] 改變顯示的進程數量。你會被提示輸入數量。

  [u] 按使用者排序。

  [M] 按記憶體用量排序。

  [o][O] 改變顯示項目的順序。

  [P] 根據CPU使用百分比大小進行排序。

  [T] 根據時間/累計時間進行排序。

  [Ctrl+L] 擦除並且重寫螢幕。

  [q] 退出程式。

  [r] 重新安排一個進程的優先順序別。系統提示使用者輸入需要改變的進程PID以及需要設定的進程優先順序值。輸入一個正值將使優先順序降低,反之則可以使該進程擁有更高的優先權。預設值是10。

  [S] 切換到累計模式。

  [s] 改變兩次重新整理之間的延遲時間。系統將提示使用者輸入新的時間,單位為s。如果有小數,就換算成m s。輸入0值則系統將不斷重新整理,預設值是5 s。需要注意的是如果設定太小的時間,很可能會引起不斷重新整理,從而根本來不及看清顯示的情況,而且系統負載也會大大增加。

  縮寫含義:

  PID每個進程的ID

  USER進程所有者的使用者名稱

  PRI每個進程的優先順序別

  NI每個優先順序的值

  SIZE 進程的代碼大小加上資料大小再加上堆棧空間大小的總數,單位是KB RSS 進程佔用的實體記憶體的總數量,單位是KB

  SHARE進程使用共用記憶體的數量

  STAT 進程的狀態。其中S代表休眠狀態;D代表不可中斷的休眠狀態;R代表運行狀態;Z代表僵死狀態;T代錶停止或跟蹤狀態

  %CPU進程自最近一次重新整理以來所佔用的CPU時間和總時間的百分比

  %MEM進程佔用的實體記憶體佔總記憶體的百分比

  TIME進程自啟動以來所佔用的總CPU時間

  CPU CPU標識

  COMMAND進程的命令名稱

2. ps命令

ps查看目前使用者的活動進程,如果加上參數可以顯示更多的資訊,如-a,顯示所有使用者的進程

  ps ax :tty值為“?”是守護進程,叫deamon 無終端,大多系統服務是此進程,核心態進程是看不到的

      ps axf :看進程樹,以樹形方式現實進程列表敲 ,init是1號進程,系統所有進程都是它派生的,殺不掉

      ps axm :會把線程列出來。在linux下進程和線程是統一的,是輕量級進程的兩種方式。

  ps axu :顯示進程的詳細狀態。

  vsz:說此進程一共佔用了多大實體記憶體。

  rss:請求常駐記憶體多少

========================================================================================

查看線程

其實linux沒有線程,都是用進程模仿的

1. ps -ef f
用樹形顯示進程和線程,比如說我想找到proftp現在有多少個進程/線程,可以用
$ ps -ef f | grep proftpd
nobody 23117 1 0 Dec23 ? S 0:00 proftpd:   (accepting   connections)   
jack 23121 23117 0 Dec23 ? S 7:57 \_ proftpd: jack - ftpsrv:   IDLE
jack 28944 23117 0 Dec23 ? S 4:56 \_ proftpd: jack - ftpsrv:   IDLE
這樣就可以看到proftpd這個進程下面掛了兩個線程。
在Linux下面好像因為沒有真正的線程,是用進程類比的,有一個是輔助線程,所以真正程式開的線程應該只有一個。

2. pstree -c也可以達到相同的效果
$ pstree -c | grep proftpd
|-proftpd-+-proftpd
| `-proftpd

3. cat /proc/${pid}/status
可以查看大致的情況

4.  pstack

有些系統可以用這個東東,可以查看所有線程的堆棧

如何查看進程中各線程的記憶體佔用情況?

用ps aux只能查看到進程,如果進程裡面使用了pthread編程,用什麼命令才能查詢到進程裡的線程資源佔用?
ps aux | grep不就是了

參考 http://www.soft6.com/tech/16/167005.html

       http://hi.baidu.com/willor/blog/item/fd58e6c5ea840ca38326ac6a.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.