一、top – 實時顯示系統運行狀態
top 命令的功能是用于實時顯示系統運行狀態,包含處理器、內存、服務、進程等重要資源信息。運維工程師們常常會把 top 命令比作是 “加強版的 windows 任務管理器”,因為除了能看到常規的服務進程信息以外,還能夠對處理器和內存的負載情況一目了然,實時感知系統全局的運行狀態,非常適合作為接手服務器后執行的第一條命令。
動態查看進程信息,并且可以查看到系統負載,內存,CPU 等使用情況。
語法格式
top [參數]
常用參數
參數 |
解析 |
-d <秒> |
改變顯示的更新速度 |
-c |
切換顯示模式,更詳細地顯示路徑及命令 |
-s |
安全模式,不允許交互式指令 |
-i |
不顯示任何閑置或僵死的行程 |
-n |
設定顯示的總次數,完成后將會自動退出 |
-b |
批處理模式,不進行交互式顯示 |
參考實例
以默認格式顯示系統運行信息:
[root@root ~]# top
top - 02:48:56 up 20 min, 1 user, load average: 0.00, 0.00, 0.04
Tasks: 432 total, 1 running, 431 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 s
MiB Mem : 1966.1 total, 172.1 free, 1339.3 used, 454.7 buff/cache
MiB Swap: 2048.0 total, 2033.5 free, 14.5 used. 443.4 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2848 root 20 0 177712 28820 7700 S 6.2 1.4 0:01.31 sssd_kcm
1 root 20 0 244748 14180 9052 S 0.0 0.7 0:01.10 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
………………省略部分輸出信息………………
以默認格式顯示系統運行信息,但提供完整的進程路徑及名稱:
[root@root ~]# top -c
以批處理模式顯示程序信息:
[root@root ~]# top -b
設定每隔 5 秒刷新一次信息:
[root@root ~]# top -c -d 5
設定總顯示次數為 3 回,隨后自動退出命令:
[root@root ~]# top -n 5
字段解析
- load average: 0.00, 0.01, 0.05
- 系統 1 分鐘,5 分鐘,15 分鐘平均負載
- %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
- us 用戶態 CPU
- sy 內核態 CPU
- ni 優先級
- id 空閑的 CPU
- wa 等待輸入輸出設備的 CPU
- hi 硬中斷
- si 軟中斷
- st 虛擬化占用 CPU 資源
- KiB Mem : 995896 total, 487280 free, 121580 used, 387036 buff/cache
- total 總內存空間
- free 空閑內存
- used 已使用內存
- buff 寫緩沖 解決空間問題
- cache 讀緩存 解決速率問題
推薦使用
top
&&
top -c
二、htop – 互動的進程查看器
htop 是 linux 系統中的一個互動的進程查看器,一個文本模式的應用程序 (在控制臺或者 X 終端中),需要 ncurses。htop 比較人性化。它可以讓用戶交互式操作,支持顏色主題,可橫向或縱向滾動瀏覽進程列表,并支持鼠標操作。
htop 相比較 top 的優勢可以橫向或縱向滾動瀏覽進程列表,以便看到所有的進程和完整的命令行、在啟動上比 top 更快、殺進程時不需要輸入進程號、支持鼠標選中操作、top 已不再維護。
htop 相當于 top 的升級版,監控界面是彩色的。
語法格式
htop [參數]
常用參數
非交互式是直接輸入命令的時候加上參數,而交互式是 htop 進入監測后使用的。
非交互式參數
參數 |
解析 |
-C |
使用單色配色方案 |
-d |
設置更新的延遲, 單位是 10 微秒 |
-s 用戶 |
縱列排序 |
-u 用戶 |
只顯示一個指定用戶的進程 |
-p 用戶 |
只顯示給用戶 |
-h |
打印此命令幫助 |
-v |
打印版本信息 |
交互式參數
參數 |
解析 |
space |
標記一個進程 |
U |
取消所有標記 |
l |
顯示進程打來的文件 |
u |
顯示特定用戶 |
M |
按照內存排序 |
P |
按照 CPU 排序 |
T |
按在線時長排序 |
直接輸入數字 |
查找對應的 PID 進程 |
參考實例
啟動 htop:
[root@root ~]# htop
以單色模式啟動 htop:
[root@root ~]# htop -C
設置顯示更新的延遲為 3 秒:
[root@root ~]# htop -d 3
顯示一個給定的用戶的進程:
[root@root ~]# htop -u linuxcool_user
三、vmstat – 顯示虛擬內存狀態
vmstat 命令的含義為顯示虛擬內存狀態(“Virtual Memory Statistics”),但是它可以報告關于進程、內存、I/O 等系統整體運行狀態。
語法格式
vmstat [參數]
&&
vmstat [參數] [時間間隔] [執行次數]
常用參數
參數 |
解析 |
-a |
顯示活動內頁 |
-f |
顯示啟動后創建的進程總數 |
-m |
顯示 slab 信息 |
-n |
頭信息僅顯示一次 |
-s |
以表格方式顯示事件計數器和內存狀態 |
-d |
報告磁盤狀態 |
-p |
顯示指定的硬盤分區狀態 |
-S |
輸出信息的單位 |
參考實例
顯示活動內頁:
[root@root ~]# vmstat -a
顯示啟動后創建的進程總數:
[root@root ~]# vmstat -f
顯示 slab 信息:
[root@root ~]# vmstat -m
頭信息僅顯示一次:
[root@root ~]# vmstat -n
以表格方式顯示事件計數器和內存狀態:
[root@root ~]# vmstat -s
顯示指定的硬盤分區狀態:
[root@root ~]# vmstat -p /dev/sda1
指定狀態信息刷新的時間間隔為 1 秒:
[root@root ~]# vmstat 1
指定狀態信息刷新的時間間隔為 2 秒刷新 3 次:
[root@root ~]# vmstat 2 3
字段解析
[root@root ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 35896 445256 520 487496 271 2091 622 2119 129 127 1 1 97 0 0
1.procs
- r 表示等待執行的任務數,當一段時間內這個數值一直超過 CPU 數說明當前系統出現 CPU 瓶頸;
- b 表示等待 IO 的進程數量。
2.memory
- swpd 虛擬內存已使用的大小,如果大于 0,表示你的機器物理內存不足了,如果不是程序內存泄露的原因,那么你該升級內存了或者把耗內存的任務遷移到其他機器;
- free 空閑的物理內存的大小;
- buff Linux/Unix 系統是用來存儲,目錄里面有什么內容,權限等的緩存;
- cache 直接用來記憶我們打開的文件, 給文件做緩沖。
3.swap
- si 每秒從磁盤讀入虛擬內存的大小,如果這個值大于 0,表示物理內存不夠用或者內存泄露了,要查找耗內存進程解決掉;
- so 每秒虛擬內存寫入磁盤的大小,如果這個值大于 0,同上。
4.io
- bi 塊設備每秒接收的塊數量,這里的塊設備是指系統上所有的磁盤和其他塊設備,默認塊大小是 1024byte;
- bo 塊設備每秒發送的塊數量,例如我們讀取文件,bo 就要大于 0。bi 和 bo 一般都要接近 0,不然就是 IO 過于頻繁,需要調整。
5.system
- in 每秒中斷數,包括時鐘中斷;
- cs 表示每秒上下文切換;
- 這兩個值越大,會看到由內核消耗的 cpu 時間會越多。
6.cpu
- us 用戶 CPU 時間;
- sy 系統 CPU 時間,如果太高,表示系統調用時間長,例如是 IO 操作頻繁;
- id 空閑 CPU 時間,一般來說,id + us + sy = 100, 一般我認為 id 是空閑 CPU 使用率,us 是用戶 CPU 使用率,sy 是系統 CPU 使用率;
- wa 等待 IO CPU 時間;
- st 等待 IO CPU 時間。
四、dstat – 全能系統信息統計工具
dstat 命令是一個用來替換 vmstat、IOStat?.NETstat、nfsstat 和 ifstat 這些命令的工具,是一個全能系統信息統計工具。與 sysstat 相比,dstat 擁有一個彩色的界面,在手動觀察性能狀況時,數據比較顯眼容易觀察;而且 dstat 支持即時刷新,譬如輸入 dstat 3 即每三秒收集一次,但最新的數據都會每秒刷新顯示。和 sysstat 相同的是,dstat 也可以收集指定的性能資源,譬如 dstat -c 即顯示 CPU 的使用情況。
語法格式
dstat [參數]
常用參數
參數 |
解析 |
-c |
顯示 CPU 系統占用,用戶占用,空閑,等待,中斷,軟件中斷等信息 |
-d |
顯示磁盤讀寫數據大小 |
-n |
顯示網絡狀態 |
-l |
顯示系統負載情況 |
-m |
顯示內存使用情況 |
-g |
顯示頁面使用情況 |
-p |
顯示進程狀態 |
-s |
顯示交換分區使用情況 |
-r |
I/O 請求情況 |
-y |
系統狀態 |
–ipc |
顯示 ipc 消息隊列,信號等信息 |
–socket |
用來顯示 tcp udp 端口狀態 |
參考實例
分別顯示 cpu、disk、net、page、system 信息:
[root@root ~]# dstat
每三秒收集一次 cpu、disk、net、page、system 信息 :
[root@root ~]# dstat 3
顯示 CPU 系統占用,用戶占用,空閑,等待,中斷,軟件中斷等信息 :
[root@root ~]# dstat -c
顯示磁盤讀寫數據大小 :
[root@root ~]# dstat -d
顯示網絡狀態:
[root@root ~]# dstat -n
五、glances – 高層次的多子系統概覽
Glances 是一個相對比較新的系統監控工具,用 Python/ target=_blank class=infotextkey>Python 編寫的,使用 psutil 庫從系統獲取信息。可以用它來監控 CPU、平均負載、內存、網絡接口、磁盤 I/O,文件系統空間利用率、掛載的設備、所有活動進程以及消耗資源最多的進程。Glances 有很多有趣的選項。它的主要特性之一是可以在配置文件中設置閥值(careful 小心、warning 警告、critical 致命),然后它會用不同顏色顯示信息以表明系統的瓶頸。
語法格式
glances [參數]
常用參數
參數 |
解析 |
-b |
顯示網絡連接速度 Byte/ 秒 |
-s |
設置 glances 運行模式為服務器 |
-B |
綁定服務器端 IP 地址或者主機名稱 |
-c |
連接 glances 服務器端 |
-t |
設置屏幕刷新的時間間隔,單位為秒,默認值為 2 秒,數值許可范圍:1~32767 |
參考實例
192.168.10.2 主機啟動 glances 服務:
[root@root ~]# glances -s -B 192.168.10.2 &
從另一臺主機查看 192.168.10.2 主機的系統負載狀態:
[root@root ~]# glances -c 192.168.10.2
顯示網絡連接速度 Byte/ 秒:
[root@root ~]# glances -b
設置屏幕刷新的時間間隔為 6 秒:
[root@root ~]# glances -t 6
六、sar – 系統運行狀態統計
sar 命令是 Linux 下系統運行狀態統計工具,它將指定的操作系統狀態計、數器顯示到標準輸出設備。
sar(System Activity Reporter 系統活動情況報告)是目前 Linux 上最為全面的系統性能分析工具之一,可以從多方面對系統的活動進行報告,包括:文件的讀寫情況、系統調用的使用情況、磁盤 I/O、CPU 效率、內存使用狀況、進程活動及 IPC 有關的活動等
語法格式
sar [ 選項 ] [ <時間間隔> [ <次數> ] ]
常用參數
參數 |
解析 |
-A |
所有報告的總和 |
-R |
顯示內存狀態 |
-b |
顯示 I/O 和傳遞速率的統計信息 |
-B |
顯示換頁狀態 |
-d |
輸出每一塊磁盤的使用信息 |
-e |
設置顯示報告的結束時間 |
-f |
從制定的文件讀取報告 |
-i |
設置狀態信息刷新的間隔時間 |
-P |
報告每個 CPU 的狀態 |
-u |
輸出 cpu 使用情況和統計信息 |
-v |
顯示索引節點、文件和其他內核表的狀態 |
-w |
顯示交換分區的狀態 |
-x |
顯示給定進程的裝 |
-r |
報告內存利用率的統計信息 |
參考實例
使用 - R 參數顯示內存信息:
[root@root ~]# sar -R
使用 - b 參數顯示 I/O 速率:
[root@root ~]# sar -b
使用 - u 參數顯示 CPU 利用率:
[root@root ~]# sar -u
使用 - d 參數查看每塊磁盤的使用信息
[root@root ~]# sar -d
使用 - i 參數和 - f 參數設置狀態信息 1 秒刷新一次并記錄 5 次
[root@root ~]# sar -i 1 -f 5