對于Linux系統的愛好者,自然追求的是更開放、開源的生態和更原生的、快捷的應用。對這些人而言,Linux系統的運行狀況就顯得很重要。對于另一些運維工程師而言,Linux系統是他們的工作內容,系統運行狀況需要實時掌控。無論是對于哪一方而言,Linux系統監控都顯得必不可少。今天,筆者就和大家盤點最受歡迎的那些系統監控命令。
從系統組成來看,可以分為CPU監控、內存監控、IO監控、磁盤監控……那么,這么多種監控命令中,你最常用的是哪個呢?
1、top
在windows系統下,大家可能都會用ctrl+alt+delete組合件啟動任務管理器,適時的結束崩潰進程,保證系統正常運行。在linux系統中,top有著類似的功能,它也是Linux下常用的性能分析工具,它能夠實時顯示系統中各個進程的資源占用狀況及總體狀況。
以下圖片部分來源于網絡
如下圖所示,top命令會將結果按照一定順序進行顯示,并定期更新。可以顯示CPU的使用率、內存使用率、交換內存使用大小、高速緩存使用大小、緩沖區使用大小,進程PID、所使用命令等等。
2、mpstat
mpstat(Multiprocessor Statistics,多處理器統計)也是一個常用的實時系統監控工具,也屬于CPU監控系列命令。mpstat會報告與CPU相關的統計信息,這些信息存放在/proc/stat文件中。通過這個參數可以比較直觀的判斷當前的I/O操作是否存在瓶頸。
3、vmstat
vmstat屬于內存監控系列。根據相關概念,vmstat(Virtual Meomory Statistics,虛擬內存統計)能夠對系統的整體情況進行統計,包括內核進程、虛擬內存、磁盤、陷阱和 CPU 活動的統計信息。其具體命令一般是通過兩種形式來是執行的第一個參數是采樣的時間間隔數,單位是秒,第二個參數是采樣的次數。如vmstat 2 100# 其中2表示刷新間隔,100表示輸出次數。
命令執行后,我們會看到一系列參數。不同的參數代表了包括進程、內存、IO在內不同的含義。如r列表示運行隊列,這個值如果長期大于系統CPU個數,就說明CPU資源不足,可以考慮增加CPU;b列表示阻塞的進程數swpd 在等待資源的進程數,比如正在等待I/O或者內存交換等。
4、iostat
與上面的命令相似,很顯然,這個linux系統監控命令是屬于IO監控系列的,iostat(I/O statistics,輸入輸出統計)是一個用于收集顯示系統存儲設備輸入和輸出狀態統計的簡單工具。例如命令:iostat -m -x 1 1000。
從結果來看,同樣是分為不同列的不同含義表示。如果您需要了解更多的iostat的信息,可以輸入man iostat命令尋求幫助。
5、ps
ps屬于進程監控類,也是監控最好CPU的Java線程。ps即Process Status,進程狀態,該命令是最基本同時也是非常強大的進程查看命令。具體可以運行ps -mp pid -o THREAD,tid,time 或者 ps -Lfp pid命令,而其中最常用的命令就是ps aux,即顯示當前所有進程。
從上面的圖片其實我們能夠看到在所有進程中耗時最長的是TID : 30834,1分39秒。為了避免線程太多不好找,可以使用一些命令,讓ps輸出按照一定的規則進行排序。如:ps aux --sort=+rss為按內存升序排列;ps aux --sort=-rss為按內存降序排列;ps aux --sort=+%cpu為按cpu升序排列;ps aux --sort=-%cpu為按cpu降序排列。
本期linux實驗室為大家帶來了最好用的五個linux系統監控命令。這些命令無論是對于linux小白,還是對于linux系統運維工作者都是會經常需要,希望大家能夠記得。