Linux中常用的監控命令
Linux中常用的監控命令
在以前使用windows系統的時候,常常會遇到系統變卡,然後我們就會使用快捷鍵 ctrl
+ shift
+ ESC
來調出windows的工作管理員,我們可以看到當前執行的程序,程序所佔的 CPU
資源,記憶體資源等,還可以直接強制結束掉程序。
我們在使用linux的時候也同樣會出現這樣的問題,如果你遇到了,那麼你就要學會這些linux檢視系統資源的命令。
[toc]
下面我分為這麼幾個角度分別說下這些命令的使用:
- 整機
- CPU
- 記憶體
- 硬碟
- 磁碟
- 網路I/O
整機
top
命令
引數說明:
d p q S s i c
常用命令說明:
-
Ctrl+L
:擦除並且重寫螢幕 -
K
:終止一個程序。系統將提示使用者輸入需要終止的程序PID,以及需要傳送給該程序什麼樣的訊號。一般的終止程序可以使用15訊號;如果不能正常結束那就使用訊號9強制結束該程序。預設值是訊號15。在安全模式中此命令被遮蔽。 -
i
:忽略閒置和僵死程序。這是一個開關式命令。 -
q
:退出程式 -
r
:重新安排一個程序的優先級別。系統提示使用者輸入需要改變的程序PID以及需要設定的程序優先順序值。輸入一個正值將使優先順序降低,反之則可以使該程序擁有更高的優先權。預設值是10。 -
S
:切換到累計模式。 -
s
:改變兩次重新整理之間的延遲時間。系統將提示使用者輸入新的時間,單位為s。如果有小數,就換算成m s。輸入0值則系統將不斷重新整理,預設值是5 s。需要注意的是如果設定太小的時間,很可能會引起不斷重新整理,從而根本來不及看清顯示的情況,而且系統負載也會大大增加。 -
f
或者F
:從當前顯示中新增或者刪除專案。 -
o
或者O
:改變顯示專案的順序 -
l
:切換顯示平均負載和啟動時間資訊。 -
m
:切換顯示記憶體資訊。 -
t
:切換顯示程序和CPU狀態資訊。 -
c
:切換顯示命令名稱和完整命令列。 -
M
:根據駐留記憶體大小進行排序。 -
P
:根據CPU使用百分比大小進行排序。 -
T
:根據時間/累計時間進行排序。 -
W
:將當前設定寫入~/.toprc檔案中。
當我們輸入 top
命令後我們可以看到:

其中有一行是白色的,白色中顯示的是欄位名稱:
PID: 程序id號
PPID:父程序id號
UID:有效使用者id號
USER:有效使用者名稱
RUSER: 真實使用者名稱
TTY:終端裝置
%CPU:計算資源
%MEN:記憶體
%TIME+:CPU時間
VIRT:virtual memory usage 虛擬記憶體
- 程序“需要的”虛擬記憶體大小,包括程序使用的庫、程式碼、資料等
- 假如程序申請100m的記憶體,但實際只使用了10m,那麼它會增長100m,而不是實際的使用量
RES:resident memory usage 常駐記憶體
- 程序當前使用的記憶體大小,但不包括swap out
- 包含其他程序的共享
- 如果申請100m的記憶體,實際使用10m,它只增長10m,與VIRT相反
- 關於庫佔用記憶體的情況,它只統計載入的庫檔案所佔記憶體大小
SHR:shared memory 共享記憶體
- 除了自身程序的共享記憶體,也包括其他程序的共享記憶體
- 雖然程序只使用了幾個共享庫的函式,但它包含了整個共享庫的大小
- 計算某個程序所佔的實體記憶體大小公式:RES – SHR
- swap out後,它將會降下來
uptime
命令
簡化版top命令
從上面的引數,top命令顯示的內容,我們就可以看到很多的引數,也是特別詳細的,但是我們可能有時候就只是想了解一些簡單的資訊,這時候我們就可以使用 uptime
這個命令了。
root@VM-0-4-ubuntu:~# uptime 15:17:22 up 171 days, 16:56,1 user,load average: 0.00, 0.02, 0.02
- 系統當前時間 15:17:22
- 171 days, 16:56 從上次啟動開始系統執行的時間
- 1 user 注意這裡實際是連線數量,可以自己測試出來,同一使用者多個連線的時候算多個
- load average: 0.00, 0.02, 0.02 這是重頭戲,分別描述了1分鐘5分鐘15分鐘內系統平均負載
引數
- -p, --pretty show uptime in pretty format//以比較友好的格式輸出
- -h, --help display this help text//顯示幫助選項
- -s, --since system up since, in yyyy-mm-dd HH:MM:SS format//系統啟動時間
- -V, --version display version information and exit//版本資訊
CPU
vmstat
命令
vmstat
命令可以檢視很多資訊,包括伺服器的CPU使用率,記憶體使用,虛擬記憶體交換情況,IO讀寫情況。但是我們一般使用 vmstat
命令一般常用來檢視cpu的情況。
引數
-
-a
:顯示活躍和非活躍記憶體 -
-f
:顯示從系統啟動至今的fork數量 。 -
-m
:顯示slabinfo -
-n
:只在開始時顯示一次各欄位名稱。 -
-s
:顯示記憶體相關統計資訊及多種系統活動數量。 -
delay
:重新整理時間間隔。如果不指定,只顯示一條結果。 -
count
:重新整理次數。如果不指定重新整理次數,但指定了重新整理時間間隔,這時重新整理次數為無窮。 -
-d
:顯示磁碟相關統計資訊。 -
-p
:顯示指定磁碟分割槽統計資訊 -
-S
:使用指定單位顯示。引數有 k 、K 、m 、M ,分別代表1000、1024、1000000、1048576位元組(byte)。預設單位為K(1024 bytes) -
-V
:顯示vmstat版本資訊。

每2秒採集一次每次採集
-
procs
(程序)-
r
:當前執行佇列中執行緒的數目,代表執行緒處於可執行狀態,但CPU還未能執行.,這個值可以作為判斷CPU是否繁忙的一個指標;當這個值超過了CPU數目,就會出現CPU瓶頸了;這個我們可以結合top
命令的負載值同步評估系統性能; -
b
:等待IO的程序數量;如果該值一直都很大,說明IO比較繁忙,處理較慢;
-
-
memory
(記憶體)swpd free buff cache
-
swap
(交換空間,單位:KB);記憶體夠用的時候,這2個值都是0,如果這2個值長期大於0時,系統性能會受到影響,磁碟IO和CPU資源都會被消耗。有時我們看到空閒記憶體(free)很少的或接近於0時,就認為記憶體不夠用了,不能光看這一點,還要結合si和so,如果free很少,但是si和so也很少(大多時候是0),那麼不用擔心,系統性能這時不會受到影響的;si so
-
io
(單位:塊/秒)bi bo
-
system
(系統);這2個值越大,會看到由核心消耗的CPU時間會越大;in cs
-
cpu
(以百分比表示)-
us
:使用者程序執行時間(user time); -
sy
:系統程序執行時間(system time);如果us
+sy
大於80%系統負擔就比較大了。 -
id
:空閒時間(包括IO等待時間); -
wa
:等待IO時間;wa的值高時,說明IO等待比較嚴重,這可能由於磁碟大量作隨機訪問造成,也有可能磁碟出現瓶頸。
-
mpstat
命令
檢視所有cpu核的資訊
常用 mpstat -P ALL 2
每兩秒取樣一次所有cpu的資訊
引數
mpstat [-P {|ALL}] [internal [count]]
-
-P {|ALL}
表示監控哪個CPU, cpu在[0,cpu個數-1]中取值 -
internal
相鄰的兩次取樣的間隔時間、 -
count
取樣的次數,count只能和delay一起使用
當沒有引數時,mpstat則顯示系統啟動以後所有資訊的平均值。有interval時,第一行的資訊自系統啟動以來的平均資訊。從第二行開始,輸出為前一個interval時間段的平均資訊。

欄位說明:
%usr %nice %iowait %irq %soft %steal %guest %idle
pidstat
命令
主要用於監控全部或指定程序佔用系統資源的情況。但是我們一般都是用這個命令檢視具體的某一個程序的詳細情況。
-
-u
:預設的引數,顯示各個程序的cpu使用統計 -
-r
:顯示各個程序的記憶體使用統計 -
-d
:顯示各個程序的IO使用情況 -
-p
:指定程序號 -
-w
:顯示每個程序的上下文切換情況 -
-t
:顯示選擇任務的執行緒的統計資訊外的額外資訊 -
-T { TASK | CHILD | ALL }
這個選項指定了pidstat監控的。TASK表示報告獨立的task,CHILD關鍵字表示報告程序下所有執行緒統計資訊。ALL表示報告獨立的task和task下面的所有執行緒。
注意:task和子執行緒的全域性的統計資訊和pidstat選項無關。這些統計資訊不會對應到當前的統計間隔,這些統計資訊只有在子執行緒kill或者完成的時候才會被收集。 -
-V
:版本號 -
-h
:在一行上顯示了所有活動,這樣其他程式可以容易解析。 -
-I
:在SMP環境,表示任務的CPU使用率/核心數量 -
-l
:顯示命令名和所有引數
但是我們還是經常這樣使用這個命令:

檢視11321這個程序的cpu使用情況
欄位說明
PID %usr %system %guest %CPU CPU Command
記憶體
free
命令
這是我們用來檢視系統記憶體資訊最常用的命令。
引數
-b -k -m -g -o -s -t -V

欄位說明
- total 記憶體總數: 15.7G
- used 已經使用的記憶體數: 15.6G
- free 空閒的記憶體數: 93M
- shared 當前已經廢棄不用,總是0
- buffers Buffer 快取記憶體數: 298M
- cached Page 快取記憶體數:14G
pidstat
命令
前面我們講解了 pidstat
命令,但是這裡我們也用這個命令來檢視記憶體情況。
pidstat -p 程序號 -r 取樣每隔秒數

欄位說明
minflt/s majflt/s VSZ RSS %MEM Command
硬碟
df
命令
引數
-a -B -h -H -i -k -m -l --no-sync -sync -P -t -T -x --help --version
雖然有這麼多的引數,但是我們還是常用 df -h
直接檢視所有的磁碟資訊。

欄位說明
-
Filesystem
:代表該檔案系統時哪個分割槽,所以列出的是裝置名稱。
1K-blocks:說明下面的數字單位是1KB,可利用-h或-m來改變單位大小,也可以用-B來設定。 -
Used
:已經使用的空間大小。 -
Available
:剩餘的空間大小。 -
Use%
:磁碟使用率。如果使用率在90%以上時,就需要注意了,避免磁碟容量不足出現系統問題,尤其是對於檔案內容增加較快的情況(如/home、/var/spool/mail等)。 -
Mounted on
:磁碟掛載的目錄,即該磁碟掛載到了哪個目錄下面。
磁碟I/O
iostat
命令
引數
-
-c
: 僅顯示CPU統計資訊.與-d選項互斥. -
-d
: 僅顯示磁碟統計資訊.與-c選項互斥. -
-k
: 以K為單位顯示每秒的磁碟請求數,預設單位塊. -
-p
: device | ALL
與-x選項互斥,用於顯示塊裝置及系統分割槽的統計資訊.也可以在-p後指定一個裝置名. -
-t
在輸出資料時,列印蒐集資料的時間. -
-V
列印版本號和幫助資訊. -
-x
輸出擴充套件資訊.

欄位說明
rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
pidstat
命令
pidstat -d 取樣間隔時間 -p 程序id

欄位說明
PID kB_rd/s kB_wr/s kB_ccwr/s COMMAND
網路I/O
ifstat
命令
引數
-l -a -z -i -s -h -n -t -T -w -W -S -b -q -v -d
每秒輸出一次網路IO資訊

其中的 eth0
為網絡卡。