LINUX top命令詳細解讀

還不算暈發表於2014-03-10

top常用引數如下:

-d :後面可以接秒數,就是整個程式畫面更新的秒數。預設是 5 秒;
-b :以批次的方式執行 top ,還有更多的引數可以使用喔!
通常會搭配資料流重導向來將批次的結果輸出成為檔案。
-n :與 -b 搭配,意義是,需要進行幾次 top 的輸出結果。
-p :指定某些個 PID 來進行觀察監測而已。
在 top 執行過程當中可以使用的按鍵指令:
? :顯示在 top 當中可以輸入的按鍵指令;
P :以 CPU 的使用資源排序顯示;--%CPU
M :以 Memory 的使用資源排序顯示;--%MEM
N :以 PID 來排序--從大到小
T :由該 Process 使用的 CPU 時間累積 (TIME+) 排序。
k :給予某個 PID 一個訊號 (signal)
r :給予某個 PID 重新制訂一個 nice 值。

常用命令組合:

[oracle@bys3 ~]$ top -d 2   ---兩秒重新整理一次
[oracle@bys3 ~]$ top -bn 1 >abc.log    ---將輸出寫入到指定檔案
[oracle@bys3 ~]$ top -d 2 -p  2955     ---只輸出指定程式的資訊
top - 23:57:41 up  6:03,  4 users,  load average: 0.02, 0.02, 0.00
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.5%us, 16.4%sy,  0.0%ni, 83.1%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1026688k total,   918396k used,   108292k free,    38260k buffers
Swap:  4249144k total,        0k used,  4249144k free,   627300k cached
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                         
 2955 oracle    -2   0  365m  13m  12m S 13.0  1.4  44:39.75 oracle

實用----使用top命令後,還可以輸入 P M N T等對輸出資訊進去排序--注意是大寫。?號可以調出幫助。

TOP命令輸出資訊的解讀:

top 可以持續的監測整個系統的程式工作狀態,預設每5秒重新整理一次。
輸出分為上下兩個部分:上部6行:系統概況。下部:每個process使用的資源情況,
預設只使用top命令時此部分輸出的process行數不是固定的,按視窗大小來顯示的,視窗越大顯示越多。
如果使用top -bn 1這樣,只輸出一次結果,則會將所有程式資訊都輸出--此時可以將輸出重定向到檔案檔案檢視。
示例:
[oracle@bys3 ~]$ top -bn 1
top - 23:30:46 up  5:36,  4 users,  load average: 0.00, 0.00, 0.00
Tasks: 138 total,   1 running, 137 sleeping,   0 stopped,   0 zombie
Cpu(s):  1.0%us, 19.2%sy,  0.3%ni, 76.1%id,  3.3%wa,  0.0%hi,  0.1%si,  0.0%st
Mem:   1026688k total,   933452k used,    93236k free,    35964k buffers
Swap:  4249144k total,        0k used,  4249144k free,   638360k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                         
 2955 oracle    -2   0  365m  13m  12m S 11.7  1.4  41:13.71 oracle                                                          
    1 root      20   0  2160  572  484 S  0.0  0.1   0:02.76 init                                                            
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.01 kthreadd                                                        
以下輸出省略。

上部分--前五行:

第一行:
top - 23:30:46 up  5:36,  4 users,  load average: 0.00, 0.00, 0.00
和uptime輸出一樣
[oracle@bys3 ~]$ uptime
 23:36:07 up  5:41,  4 users,  load average: 0.00, 0.00, 0.00
 系統的當前時間,系統啟動時間,當前登陸的使用者數,1、5、10分鐘的CPU負載情況-一般不過1
 第二行:
 Tasks: 138 total,   1 running, 137 sleeping,   0 stopped,   0 zombie
 當前總程式數量,正在執行的,睡眠中的,停止的,zombie殭屍程式數-非0要注意檢視
 第三行:
 Cpu(s):  1.0%us, 19.2%sy,  0.3%ni, 76.1%id,  3.3%wa,  0.0%hi,  0.1%si,  0.0%st
 使用者程式佔用的CPU比例,核心戰勝CPU比例,改變過優先順序的使用者程式佔用CPU百分比,空閒CPU百分比,
 等待輸入輸出的CPU時間百分比
 第四行:
 Mem:   1026688k total,   933452k used,    93236k free,    35964k buffers
 實體記憶體總量-有單位K,已經使用的,空閒的,核心緩衝的內在量
 第五行:
 Swap:  4249144k total,        0k used,  4249144k free,   638360k cached
 SWAP空間總大小-單位K,已經使用的,空閒的,緩衝的交換區總量--使用過又未被覆蓋的SWAP
 ###############################################

 第二部分:各程式詳細資訊--程式各列的具體含義

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                         
 2955 oracle    -2   0  365m  13m  12m S 11.7  1.4  41:13.71 oracle  
 程式資訊各列的具體含義:
 PID              程式ID,
 USER         程式所有者名,
 PR               Priority 的簡寫,程式的優先執行順序,越小越早被執行
 NI                NICE值-負高優先,
 VIRT           使用虛擬記憶體總量;
 RES           程式使用的、未被換出的實體記憶體大小
 SHR            共享記憶體大小。
 S                  程式狀態-R執行-S睡眠-T跟蹤/停止-Z殭屍-D不可中斷的睡眠狀態
 %CPU        上次更新到現在的CPU時間佔用百分比
 %MEM         程式使用的實體記憶體百分比
 TIME+          程式使用的CPU時間總計,單位1/100秒-毫秒
 COMMAND 命令名/命令列

相關文章