linux下的top命令的各類引數詳解
linux下的top命令是系統管理員分析系統執行現狀的法寶,但是每當top之後,除了幾個用得最多的引數,其他數字對於我來說,只是數字而已,完全不明白其具體含義。由此做一次top專題,對這個命令的引數和顯示結果做一次詳盡的分析。
top命令用於顯示系統當前的程序和其他狀況;top是一個動態顯示過程,即可以通過使用者按鍵來不斷重新整理當前狀態。如果再前臺執行該命令,它將獨佔前臺,直到使用者終止該程式為止。
top命令的執行結果如下:
點選(此處)摺疊或開啟
- top - 21:24:25 up 8 days, 1:18,
2 users, load average: 0.00, 0.00,
0.00
- Tasks:
- Cpu(s): 0.1%
us, 0.1% sy, 0.0%
ni, 99.9%
id, 0.0% wa, 0.0%
hi, 0.0% si
- Mem: 60680k total, 85668k used, 75012k free, 4976k buffers
- Swap: 20088k total, 2120k used, 7968k free, 77952k cached
- PID USER PR NI VIRT RES SHR S
%CPU %MEM TIMECOMMAND
- 515 tag 20 0 6744 1484 756 R 0.
- 1 root 20 0 4828 504 468 S 0.0 0.0 0:25.18 init
- 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
- 3 root RT 0 0 0 0 S 0.0 0.0 0:04.80 migration/0
- 4 root 20 0 0 0 0 S 0.0 0.0 1:02.56 ksoftirqd/0
- 5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
- 6 root RT 0 0 0 0 S 0.0 0.0 0:00.09 watchdog/0
- 7 root RT 0 0 0 0 S 0.0 0.0 0:25.26 migration/1
- 8 root RT 0 0 0 0 S
- 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配置檔案的推薦方法。