使用w查看系統負載,vmstat命令,top命令,sar命令。nload命令
筆記內容:
l 10.1 使用w查看系統負載
l 10.2 vmstat命令
l 10.3 top命令
l 10.4 sar命令
l 10.5 nload命令
筆記日期:2017.8.23
10.1 使用w查看系統負載
學習如何監控系統狀態,是因為作為一個運維工程師需要了解
w命令可以查看當前系統的負載:
負載信息表示的意義:
使用此命令可查看系統的cpu數量:
cat /proc/cpuinfo 顯示的是邏輯cpu數量,不是物理cpu數量:
從文件內容可以看出我這裏CPU數量為4,所以在負責信息的負載情況裏的數值不超過
uptime命令也能夠查看系統負載情況,不過查看不了用戶的登錄信息,所以大部分情況下都是用w命令:
10.2 vmstat命令
當系統負載值偏高的時候,CPU不夠用了,想要知道是哪些進程在使用著CPU,可以使用vmstat命令查看:
一般使用vmstat命令的時候會加個數字1,表示每一秒顯示一次,動態的顯示信息也可以:
也可以再加一個數字定義顯示幾次就結束,例如我只需要顯示5次就結束:
在以上使用vmstat命令得出的信息我們一般只需要關註r、b、swpd、si、so、bi、bo、us、sy、id、wa這幾個列:
r是run的簡寫,表示有多少個進程處於run的狀態,就算進程在等待也是run的狀態。
b是block的簡寫,表示進程被CPU以外的資源給阻斷了,處於一個等待狀態,也就是卡住、堵塞的狀態。
swpd就表示交換分區和內存交換數據的情況、信息,當系統內存不夠了,這一列就會有數值信息波動,數值為0則是內存還是足夠的狀態。
si、so和swpd有關系,當swpd有數值變化時,si、so也會出現數值的變動。數值表示的意思是有多少KB的數據正在從swap分區輸出到內存中,和從內存輸入到swap分區中,因為si表示的是swap input,so則是swap output,也就是輸入\出的意思,這一點和io流的意思是一樣的。
bi、bo的數值是和磁盤有關系的,bi表示的是從磁盤裏讀取數據到內存中的數值,bo則是從內存裏輸出數據到磁盤中的數值。如果這個數值很大的話,就表示內存和磁盤在頻繁的輸入輸出數據,而且會導致b列數值的增加,因為內存和磁盤在頻繁的輸入輸出數據會導致系統運行緩慢從而令一些進程進入等待狀態。
us表示用戶級別的一些資源占用,例如系統裏的一些服務像數據庫服務什麽的或者在系統中搭建運行著的網站,這些都會占用著資源。us列的數字不會超過100,因為這是一個百分比。如果這個數值長時間大於50,就表示系統資源不夠用了。
sy表示系統本身的一些進程、服務占用CPU的百分比。
id表示空閑的百分比,us、sy數值處於0時,id列的數值就是100,所以id列的數值就是以100減去us、sy相加的數值。
wa是wait的簡寫,和b列是類似的,表示等待CPU資源的百分比,也就是說有多少百分比的進程在等待CPU的執行。
所以通過vmstat命令得出的信息,可以判斷哪些資源不夠用,或者處於空閑狀態,能夠監控到各種資源使用率的信息。
10.3 top命令
top命令可以具體查看進程使用資源情況,top命令是三秒鐘更新一次信息,是動態顯示的,第一行是系統負載信息,第二行表示各種狀態中的任務數量,這些任務也就是進程。第三行是CPU的百分比,第四行表示的是物理內存的使用情況,第五行表示swap交換分區的的使用情況:
Shift+m使用內存使用率來排序,同樣的是由高到低:
Shift+p切換回按CPU排序。
按數字1,會列出所有的邏輯CPU使用情況:
再按1則切換回平均值的查看方式。
按q鍵可以退出這個界面,top -c可以看到具體的進程、命令、全局的路徑。top -bn1 可以靜態地顯示,會一次性地把所有的進程信息都列出來,一般適合在寫腳本的時候使用。PID是進程的id,要想殺掉某個進程時,使用kill加進程的PID即可,USER表示這個進程是由哪個用戶運行的:
10.4 sar命令
sar是一個非常全面的分析系統狀態的命令,sar被稱做Linux系統裏的“瑞士軍刀”,也即是說這個命令的功能非常的復雜和豐富,如果你的系統裏沒有這個命令,則需要安裝sysstat包:
下載完使用這個命令可能會出現無法打開文件的情況:
這是因為sar命令不加任何選項的話,會默認調用它在系統中保留的歷史文件。
/var/log/sa/路徑是sar命令生成歷史文件的目錄,sar有一個特性會每10分鐘把系統的狀態保存到文件裏,而這個文件就會放在這個路徑下。
sar -n DEV 1 3命令可以查看網卡流量,數字1表示的是每1秒鐘更新一次信息,數字3則是表示更新到第3次就結束,第一列是時間,第二列是網卡的名字,第三列是接收的數據包數量,第四列是發送的數據包數量。第五列是接收的數據量,第六列是發送的數據量,單位是KB。最後的三列不需要關註,因為不怎麽用得到而且數值基本不會超過0:
正常情況下數據包數量一般在幾千是正常的,如果在一萬以上就不太正常了,如果數值很高就是被攻擊了。
現在再直接執行sar命令就不會報錯了:
因為在/var/log/sa/路徑下已經生成了歷史文件,sa23文件和sar23文件有一些區別,sa23文件是二進制文件不能直接cat,sar23文件則是可以直接cat查看的:
sar -n DEV命令加-f選項就可以選擇查看/var/log/sa/路徑下的歷史文件,這個歷史文件的命令是有規律的,文件名稱的結尾是當天的日期,所以可以利用歷史文件來查看歷史網卡流量數據,有一點要註意的是這個目錄下的文件最多保留一個月就會被自動清除:
sar -q查看系統負載:
sar -b查看磁盤負載:
10.5 nload命令
nload命令能夠更加直觀的查看網卡流量,nload命令默認是沒有安裝的,需要安裝nload包,但是安裝nload包之前要安裝epel-release包,因為我之前已經安裝過epel-release包了,所以我就直接安裝nload包:
安裝完後直接輸入nload命令回車運行就會跳到以下界面,這個界面是動態顯示的:
按上下或左右方向鍵都可以切換網卡:
按q鍵可退出此界面。
如果數據量大就會這樣顯示:
本文出自 “12831981” 博客,請務必保留此出處http://12841981.blog.51cto.com/12831981/1973594
使用w查看系統負載,vmstat命令,top命令,sar命令。nload命令