對於系統和網路管理員來說每天監控和調試Linux系統的性能問題是一項繁重的工作。監控和保持系統啟動並運行是很不容易的一件事。因此[實驗樓](https://www.shiyanlou.com/courses/)介紹部分linux的系統監控命令。 ...
我們的系統一旦上線跑起來我們自然希望它一直相安無事,不要宕機,不要無響應,不要慢騰騰的。但是這不是打開機器電源然後放任不管就可以得到的。所以我們要監視系統的運行狀況,發現問題及時處理。
對於系統和網路管理員來說每天監控和調試Linux系統的性能問題是一項繁重的工作。監控和保持系統啟動並運行是很不容易的一件事。因此實驗樓介紹部分linux的系統監控命令。
(1)Linux進程監控:TOP
Linux下的Top命令是一個性能監控程式,許多系統管理員常常用它來監控Linux性能,在許多Linux或者類Unix操作系統里都有這個命令。
Top命令用於按一定的順序顯示所有正在運行而且處於活動狀態的實時進程,而且會定期更新顯示結果。這條命令顯示了CPU的使用率、記憶體使用率、交換記憶體使用大小、高速緩存使用大小、緩衝區使用大小,進程PID、所使用命令以及其他。它還可以顯示正在運行進程的記憶體和CPU占用多的情況。
$ top
操作截圖:
在圖中依次可以看到進程PID,進程用戶,CPU使用率,記憶體使用率、交換記憶體使用大小等等信息。top命令提供了實時的對系統處理器的狀態監視.它將顯示系統中CPU最“敏感”的任務列表.
通過man top可以查看到詳細的top命令使用方式。
$ man top
操作截圖:
(2)虛擬記憶體統計 : vmstat
Linux 的 VmStat 命令用於顯示虛擬記憶體、內核線程、磁碟、系統進程、I/O 塊、中斷、CPU 活動 等的統計信息。
一般vmstat工具的使用是通過兩個數字參數來完成的,第一個參數是採樣的時間間隔數,單位是秒,第二個參數是採樣的次數,
$ vmstat 2 1
$ vmstat 2 2
操作截圖:
如果要求vmstat每2秒採集數據,一直採集,直到結束程式(Ctrl+c)。則省略採集次數:
$ vmstat 2
測試參數講解:
r :表示運行隊列,如果運行隊列過大,表示你的CPU很繁忙,一般會造成CPU使用率很高
b :表示阻塞的進程數swpd :虛擬記憶體已使用的大小,如果大於0,表示你的機器物理記憶體不足了,如果不是程式記憶體泄露的原因,那麼你該升級記憶體了或者把耗記憶體的任務遷移到其他機器
free :空閑的物理記憶體的大小
buff : 系統占用的緩存大小
cache :直接用來記憶我們打開的文件,給文件做緩衝
si :每秒從磁碟讀入虛擬記憶體的大小,如果這個值大於0,表示物理記憶體不夠用或者記憶體泄露了
us :用戶CPU時間
sy :系統CPU時間
so : 每秒虛擬記憶體寫入磁碟的大小,如果這個值大於0,同上。
sy : 系統CPU時間,如果太高,表示系統調用時間長,例如是IO操作頻繁。
id : 空閑 CPU時間,一般來說,id + us + sy = 100
wt : 等待IO CPU時間。
(3)列出打開的文件:lsof
它常用於以列表的形式顯示所有打開的文件和進程。打開的文件包括磁碟文件、網路套接字、管道、設備和進程。
使用這條命令的主要情形之一就是在無法掛載磁碟和顯示正在使用或者打開某個文件的錯誤信息的時候。使用這條命令,你可以很容易地看到正在使用哪個文件。
$ lsof
操作截圖:
此命令運行的結果較長,截圖部分。
(4)網路包分析器:tcpdump
Tcpdump是最廣泛使用的網路包分析器或者包監控程式之一,它用於捕捉或者過濾網路上指定介面上接收或者傳輸的TCP/IP包。
它還有一個選項用於把捕捉到的包保存到文件里,以便以後進行分析。
-h
:查看命令幫助-i
:網路介面-c
:需要輸出包數量
$ sudo apt-get update
$ sudo apt-get install tcpdump
$ tcpdump -h
$ sudo tcpdump -i eth0 -c 3
操作截圖:
(5)網路狀態統計:netstat
Netstat是一個用於監控進出網路的包和網路介面統計的命令行工具。它是一個非常有用的工具,系統管理員可以用來監控網路性能,定位並解決網路相關問題。
-h
: 查看幫助-r
:-i
:查看網路介面
$ netstat -h
$ netstat -r
$ netstat -i
操作截圖:
(6)進程監控:Htop
Htop 是一個非常高級的互動式的實時linux進程監控工具。 它和top命令十分相似,但是它具有更豐富的特性,例如用戶可以友好地管理進程,快捷鍵,垂直和水平方式顯示進程等等。
Htop是一個第三方工具,它不包含在linux系統中,你需要使用管理工具去安裝它。
$ sudo apt-get install htop
$ htop
(7)監控Linux磁碟I/O :iotop
iotop命令同樣也非常類似於top命令和Htop程式,不過它具有監控並顯示實時磁碟I/O和進程的統計功能。在查找具體進程和大量使用磁碟讀寫進程的時候,這個工具就非常有用。
這個命令只有在kernelv2.6.20及以後的版本中才有。python版本需要 python2.7及以上版本。由於系統原因,實驗環境並不支持此命令。此處僅做介紹。
(8)輸入/輸出統計:iostat
iostat是一個用於收集顯示系統存儲設備輸入和輸出狀態統計的簡單工具。這個工具常常用來追蹤存儲設備的性能問題,其中存儲設備包括設備、本地磁碟,以及諸如使用NFS等的遠端磁碟。
$ sudo apt-get install sysstat
$ iostat
操作截圖:
各項含義: avg-cpu段:
%user: 在用戶級別運行所使用的CPU的百分比.
%nice:優先進程消耗的CPU時間,占所有CPU的百分比.
%system: 在系統級別(kernel)運行所使用CPU的百分比.
%iowait: CPU等待硬體I/O時,所占用CPU百分比.
%steal: 管理程式維護另一個虛擬處理器時,虛擬CPU的無意識等待時間百分比.
%idle: CPU空閑時間的百分比.
Device段:
tps: 每秒鐘發送到的I/O請求數.
KB_read /s: 每秒讀取的block數.
KB_wrtn/s: 每秒寫入的block數.
KB_read: 啟動到現在 讀入的block總數.
KB_wrtn: 啟動到現在寫入的block總數.
查看幫助:
$ man iostat
(9)實時區域網IP監控:IPTraf
IPTraf是一個在Linux控制台運行的、開放源代碼的實時網路(區域網)監控應用。它採集了大量信息,比如通過網路的IP流量監控,包括TCP標記、ICMP詳細信息、TCP/UDP流量分離、TCP連接包和位元組數。同時還採集有關介面狀態的常見信息和詳細信息:TCP、UDP、IP、ICMP、非IP,IP校驗和錯誤,介面活動等。
$ sudo apt-get install iptraf
$ sudo iptraf
操作截圖(註意圖片中下麵的提示操作信息。):
查看命令幫助信息,根據需要選擇合適的參數,進行監控。此處便不再贅述命令參數:
$ sudo iptraf -h
最後
以上內容全部摘選自實驗樓課程——Linux系統監控實戰,想要查看更多Linux系統常用監控命令以及監控工具的使用和介紹,點擊Linux系統監控實戰,就可以查看~