當系統運行較慢或我們的服務訪問較慢時,我們會查看系統進程運行的狀態,來查找原因,本文介紹一下幾個與進程查看相關的命令以及其用法:
top:動態查看進程的變化,top可以持續檢測進程運行的狀態,在默認情況下,每次更新進程資源的時間爲3秒,不過,可以使用-d來進行修改。
top命令用法:top[-d 數字];top [-bnp]
參數:
-d:後面可以接秒數,就是整個進程界面更新的秒數,默認是3秒;
-b:以批次的方式執行top,通常會搭配數據流重定向來將批處理的結果輸出成爲文件;
-n#:顯示多少批次,和-b一起使用
-p:查看指定PID的進程信息·
在top執行過程中可以使用的按鍵命令:
?:顯示在top當中可以輸入的按鍵命令;
k:給予某個PID一個進程號
r:給予某個PID重新制定一個nice值
top主要分爲兩個界面,上面的界面爲整個系統的資源使用狀態,基本上總共有六行,如圖所示:
第一行(top...):可以按"l"鍵取消顯示或顯示此行信息;這一行顯示的信息分別爲
21:58:16 目前的系統時間
up 29 min 開機到目前爲止所經過的時間
2users 已經登錄系統的用戶人數
load average 系統在1,5,15分鐘的平均工作負載,代表的是過去1分鐘、5分鐘、15分鐘平均cpu上的等待進程數
第二行(Tasks...):顯示的是目前進程的總量與個別進程在什麼狀態。比較需要注意的是最後的zombie那個數值,如果不是0,需要看看到底是哪個process變成殭屍了。
第三行(%Cpu):顯示的是CPU的整體負載。其中,us代表用戶空間佔用CPU百分比;sy代表系統空間佔用CPU百分比;ni代表用戶進程空間內改變過優先級的進程佔用CPU百分比;id代表空閒空間百分比;wa代表等待進程佔用CPU百分比;hi代表處理硬件中斷佔用CPU百分比;si代表處理軟件中斷佔用CPU百分比;st代表被虛擬化程序佔用的CPU百分比。需要注意的是wa,這個選項代表的是I/Owait,通常系統會變慢都是I/O產生的問題比較大。因此,這裏需要注意這個選項耗用CPU的資源。如果是多內核的設備,可以按下數字"1"來切換成不同CPU的負載率。注意:第二行和第三行的內容可以按"t"鍵取消顯示或改變顯示方式
第四行與第五行:表示目前的物理內存與虛擬內存的使用情況,要注意的是swap的使用量要儘量少,如果swap被大量使用,表示系統的物理內存不足。可以按下"m"鍵改變顯示方式或取消顯示;
第六行:顯示各進程的狀態;
PID:每個進程的ID;
USER:該進程所屬的用戶;
PR:進程的優先執行順序,越小越早被執行
NI:nice值。負值表示高優先級,正值表示低優先級
VIRT:進程使用的虛擬內存總量。VIRT=SWAP+RES
RES:進程使用的、未被換出的物理內存大小。RES=CODE+DATA
SHR:共享內存大小
S:代表進程的狀態
D=不可中斷的睡眠狀態
R=運行
S=睡眠
T=跟蹤/停止
Z=殭屍進程
+:前臺進程
l:多線程進程
N:低優先級進程
<:高優先級進程
s:sessionleader
%CPU:進程運行佔用CPU百分比
%MEM:進程佔用內存百分比
TIME+:進程使用的CPU時間總計
COMMAND:命令名
top默認按CPU使用率排序,如果要按內存使用率排序,可以按下"M";如果要按佔用CPU時間排序可以按下"T";如果按進程號排序可以按下"N";按下z則可以高亮顯示顏色;如果要返回按CPU使用率排序可以按下"P";如果要退出top可以按下"q"。
htop:與top相比,htop更加人性化。它可讓用戶交互式操作,支持顏色主題,可橫向或縱向滾動瀏覽進程列表,並支持鼠標操作。如圖所示是htop的顯示結果:
上面左上角顯示CPU、內存、交換區的使用情況,右邊顯示任務、負載、開機時間,下面就是進程實時狀況。
下面是 F1~F10 的功能和對應的字母快捷鍵。
F1:查看htop的使用幫助,用h或?也可以顯示此功能,如圖所示:
F2:設置htop,如圖所示:可以設置左上角和右上角顯示的內容以及顏色設置等,使用S也可以顯示此功能;
F3:搜索進程,使用/也可以顯示此功能,如圖所示:
F4:增量進程過濾器,相當於關鍵字搜索,不區分大小寫,也可以用\打開此功能;如圖所示:
F5:顯示屬性結構,和pstree差不多,也可以用t打開此功能:
F6:選擇排序方式,也可以使用<或>來選擇;
F7:可減少nice值,這樣就可以提高對應進程的優先級,也可以使用[實現此功能
F8:可增加nice值,這樣就可以降低對應進程的優先級,也可以使用]實現此功能;
F9:可對進程傳遞信號,也可以使用k鍵實現此功能;
F10:退出htop,也可以和top一樣使用q;
命令行選項:
-C 使用一個單色的配色方案
-d 設置延遲更新時間,單位秒
-h 顯示htop 命令幫助信息
-u 只顯示一個給定的用戶的過程
-p 只顯示給定的PIDs
-s 依此列來排序
-v 顯示版本信息
ps命令:ps命令列出的是當前那些進程的快照,就是執行ps命令的那個時刻的那些進程,如果想要動態的顯示進程信息,就可以使用top命令。ps是通過查看/proc中的信息來查看內核信息的。
選項:
a:所有與終端相關的進程;
x:所有與終端有關的進程;
u:以用戶爲中心組織進程狀態信息顯示
常用組合:aux
USER:該 process 屬於那個使用者賬號的
PID :該 process 的號碼
%CPU:該 process 使用掉的 CPU 資源百分比
%MEM:該 process 所佔用的物理內存百分比
VSZ :該 process 使用掉的虛擬內存量 (Kbytes)
RSS :該 process 佔用的固定的內存量 (Kbytes)
TTY :該 process 是在那個終端機上面運作,若與終端機無關,則顯示 ?
STAT:該程序目前的狀態,主要的狀態有
R :該程序目前正在運作,或者是可被運作
S :該程序目前正在睡眠當中 (可說是 idle 狀態),但可被某些訊號 (signal) 喚醒。
T :該程序目前正在偵測或者是停止了
Z :該程序應該已經終止,但是其父程序卻無法正常的終止他,造成 zombie (疆屍) 程序的狀態
START:該 process 被觸發啓動的時間
TIME :該 process 實際使用 CPU 運作的時間
COMMAND:該程序的實際指令
-e:顯示所有進程
-f:顯示完整格式的進程信息;
. 常用組合:-ef
-F:顯示完整格式的進程信息;
-H:以層級結構來顯示進程的相關信息;
常用組合:eFH
o filed,filed2,... 自定義要顯示的字段;比如結果中只顯示進程號和命令:
dstat命令:
dstat非常強大,可以實時的監控cpu、磁盤、網絡、IO、內存等使用情況。
直接使用dstat,默認使用的是-cdngy參數,分別顯示cpu、disk、net、page、system信息,默認是1秒顯示一條信息。可以在最後指定顯示一條信息的時間間隔,如dstat 5是每5秒顯示一條,dstat 5 3表示每5秒顯示一條,一共顯示3條。如圖所示爲dstat默認的輸出結果:
常用選項:
-c,--cpu:只顯示cpu相關信息;
-d,--disk:顯示磁盤的相關信息
-g:顯示page相關的速率數據
-m:Memory的相關統計數據;
-n:Interface的相關統計數據;
-p:顯示process的相關統計數據
-r:顯示io請求的相關的統計數據
-s:顯示swapped的相關統計數據