1. 程式人生 > >linux下的top命令的各類引數詳解

linux下的top命令的各類引數詳解

 2013的唯一的目標就是堅持每週寫一篇技術部落格。just do it!
linux下的top命令是系統管理員分析系統執行現狀的寶,但是每當top之後,除了幾個用得最多的引數,其他數字對於我來說,只是數字而已,完全不明白其具體含義。由此做一次top專題,對這個命令的引數和顯示結果做一次詳盡的分析。
top命令用於顯示系統當前的程序和其他狀況;top是一個動態顯示過程,即可以通過使用者按鍵來不斷重新整理當前狀態。如果再前臺執行該命令,它將獨佔前臺,直到使用者終止該程式為止。
top命令的執行結果如下:

點選(此處)摺疊或開啟

  1. top - 21:24:25 up 8 days, 1:18, 2 users, load average: 0.00, 0.00, 0.00
  2. Tasks:
    22 total, 1 running, 21 sleeping, 0 stopped, 0 zombie
  3. Cpu(s): 0.1% us, 0.1% sy, 0.0% ni, 99.9% id, 0.0% wa, 0.0% hi, 0.0% si
  4. Mem: 60680k total, 85668k used, 75012k free, 4976k buffers
  5. Swap: 20088k total, 2120k used, 7968k free, 77952k cached
  6.   PID USER PR NI VIRT RES SHR S %CPU %MEM TIMECOMMAND
  7.   515 tag 20 0 6744 1484 756 R 0.
    7 0.0 0:00.65 top
  8.     1 root 20 0 4828 504 468 S 0.0 0.0 0:25.18 init
  9.     2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
  10.     3 root RT 0 0 0 0 S 0.0 0.0 0:04.80 migration/0
  11.     4 root 20 0 0 0 0 S 0.0 0.0 1:02.56 ksoftirqd/0
  12.     5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
  13.     6 root RT 0 0 0 0 S 0.0 0.0 0:00.09 watchdog/0
  14.     7 root RT 0 0 0 0 S 0.0 0.0 0:25.26 migration/1
  15.     8 root RT 0 0 0 0 S
    0.0 0.0 0:00.00 migration/1
  16.     9 root 20 0 0 0 0 S 0.0 0.0 0:00.88 ksoftirqd/1

其中1-5行為統計資訊區,7-17行為程序資訊區;
1.統計資訊區
1)第1行為任務佇列資訊(與uptime命令執行結果相同)
資訊內容:21:24:25     up   8 days, 1:18,      2 users,                  load average: 0.00, 0.00, 0.00
欄位含義:當前時間     系統啟動持續時間   當前登陸使用者數    系統負載,即任務佇列的平均長度
備        注:                      格式為"日期,時:分"                                  三個數值分別為1,5和15分鐘前到現在的均值
2)第2行為程序資訊
資訊內容:Tasks: 22 total,  1 running,                   21 sleeping,         0 stopped,         0 zombie
欄位含義:  程序總數            正在執行的程序數    睡眠的程序數       已停止的程序數   殭屍程序數
3)第3行為CPU資訊
資訊內容:Cpu(s): 0.1% us, 0.1% sy, 0.0% ni, 99.9% id, 0.0% wa, 0.0% hi, 0.0% si
欄位含義:us----使用者空間佔用CPU百分比;
                    sy----核心空間佔用CPU百分比;
                    ni----使用者程序空間內改變過優先順序的程序佔用CPU百分比
                    id----空閒CPU百分比
                    wa--等待輸入輸出的CPU時間百分比
                    hi----??
                    si-----??
4)第4行為記憶體資訊
資訊內容:Mem: 60680k total, 85668k used, 75012k free, 4976k buffers
欄位含義:total----實體記憶體總量
                    used----使用的實體記憶體總量
                    free-----空閒記憶體總量
                    buffers--用作核心快取的記憶體量
5)第5行為交換區swap的資訊
資訊內容:Swap: 20088k total, 2120k used, 7968k free, 77952k cached
欄位含義:total----交換區總量
                    used---已使用的交換去總量
                    free----空閒交換區總量
                   cached--緩衝的交換去總量
備       注:cached的作用:記憶體中的內容被換出到交換區,而後又被換入到記憶體,但使用過的交換區尚未被覆蓋,該數值即為這些內容已存在域記憶體中的交換區大小。因此相應的記憶體再次被換出時可不必再對交換區寫入;

所以cache不會被主動釋放,需要上一篇帖子裡的方法來解決記憶體不足的問題。


2.程序資訊區
程序資訊區詳細列出了各程序的詳細資訊,其中每行代表一個程序;每列的含義如下:
列資訊
資訊內容:PID USER PR NI VIRT RES SHR S %CPU %MEM TIMECOMMAND
欄位含義:PID----程序id
                    USER--程序所有者的使用者名稱
                    PR-----程序的優先順序
                    NI------nice值,負值表示更高的優先順序,正值表示低優先順序
                    VIRT---程序使用的虛擬記憶體總量,單位為kb。其中VIRT=SWAP RES
                    RES----程序使用的、未被換出的實體記憶體的大小,單位為kb。RES=CODE DATA
                    SHR---共享記憶體的大小,單位為kb
                    S-------程序狀態
                               D---不可中斷的睡眠狀態
                               R---執行
                               S---睡眠
                               T---跟蹤/停止
                               Z---殭屍程序
                    %CPU--上次更新到現在的CPU時間佔用比
                    %MEM--程序使用的實體記憶體百分比
                    TIME ---程序使用的CPU時間總計,單位為1/100秒
                    COMMAND---命令列/命令名
備       注:以上顯示的內容只是top命令的一部分內容,還有其他列,資訊如下:
                   SWAP----程序使用的虛擬記憶體中,被換出的大小
                   CODE---可執行程式碼佔用的實體記憶體大小,單位為kb
                   DATA----可執行程式碼以外的部分(資料段 棧)佔用的實體記憶體大小,單位為kb
                   PPID------父程序ID
                   RUSER----real user name
                   UID--------程序所有者的使用者id
                   GROUP--程序所有者的組名
                   TTY--------啟動程序的終端名,不是從終端啟動的程序則顯示為?
                   #C--------Last used CPU (SMP)
                   TIME------程序使用的CPU時間總計,單位秒
                   nFLT------頁面錯誤次數
                   nDRT-----最後一次寫入到現在,被修改過的頁面數
                   WCHAN--若該程序在睡眠,則顯示睡眠中的系統函式名
                   Flags-----任務標誌,參照sched.h
                   更改顯示列的方法:
                   a)通過f鍵可以選擇顯示的內容,按f鍵後會顯示列的列表,按a-z即可顯示或隱藏對應的列,最後按回車鍵確定;
                   b)按o鍵可以改變列的顯示順序。按小寫的a-z可以將相應的列向右移動,而大寫的A-Z可以將相應的列向左移動。最後按回車鍵確定;
                   c)按大寫F或O鍵,然後按a-z可以將程序按照相應的列進行排序。而大寫的R鍵可以將當前的排序倒轉;
3.top命令使用
   通過man top可以檢視到詳細的top命令使用方式。
1)命令形式
          top [-] [d] [p] [q] [c] [S] [s]
2)引數說明
      d----指定每兩次螢幕資訊重新整理之間的時間間隔。當然使用者可以使用s互動命令來調整刷屏時間;
      p----通過指定監控程序ID來僅監控某個程序的狀態;
      q----使top沒有任何延遲的進行重新整理。如果呼叫程式有root許可權,那麼top將以儘可能高的優先順序執行;
      c----顯示整個命令列而不只是顯示命令名
       s----使top命令在安全模式中執行。這將去除互動命令所帶來的潛在危險
       S----指定累計模式
3)在top命令的展示結果中,還有一些互動命令可以使用,這些命令都是單個字母
       ctrl l ------擦出並重寫螢幕
       h或者?---顯示幫助畫面,給出一些簡短命令總結說明
       k------------終止一個程序,系統將提示使用者輸入需要終止的程序PID,以及需要傳送給該程序什麼樣的訊號。一般終止程序可以使用15訊號;如果不能正常結束那就使用訊號9強制結束程序;預設的訊號是15;但是在安全模式中此命令被遮蔽;
       i-------------忽略閒置和殭屍程序。這是一個開關式的命令;
       q------------退出top程式;
       r-------------重新安排一個程序的優先順序;系統提示使用者輸入需要改變的程序PID以及需要設定的程序優先順序值,輸入一個正值將使優先順序降低,反之則可以使該程序擁有更高的優先順序;預設值為10;
      S-------------切換到累計模式
      s-------------改變兩次重新整理之間的延遲時間。系統將提示使用者輸入新的時間,單位為s。如果有小數,就換算成ms。輸入0值則系統將不斷重新整理,預設值是5s;如果值設的很小,不但看不清結果,同時還會是系統負載大大增加;
     f或F---------從當前顯示中新增或刪除專案;
     o或O-------改變顯示專案的順序;
     l--------------切換顯示平均負載和啟動時間資訊;
     m------------切換顯示記憶體資訊;
     t--------------切換顯示程序和CPU資訊;
     c-------------切換顯示命令名稱和完整命令列;
     M------------根據駐留記憶體大小進行排序;
     P-------------根據CPU使用百分比大小進行排序;
     T--------------根據時間/累計時間進行排序;
     W-------------將當前設定寫入~/.toprc檔案中。這是寫top配置檔案的推薦方法。