圖形介面雖直觀,但佔用資源、需桌面環境、不適合無頭伺服器。指令列監控工具輕量、可腳本化、可透過 SSH 遠端操作,是運維核心技能。本文系統整理五大經典監控指令,含關鍵指標解讀、實戰輸出範例、常用參數組合,助您快速定位 CPU、記憶體、磁碟、網路瓶頸。
運行等級調整:進入純文字模式
# 暫時切換
sudo systemctl isolate multi-user.target # systemd 系統
# 或
sudo init 3 # SysVinit 系統
# 永久設定預設為文字模式
sudo systemctl set-default multi-user.target
# 需要圖形時臨時啟動
startx
1. iostat - 磁碟 I/O 監控核心
常用參數
iostat -xz 1 10 # 擴充統計(-x)、忽略零裝置(-z)、每1秒採樣10次
iostat -d -k 2 # 只顯示裝置(-d)、KB單位(-k)、每2秒
iostat -p sda # 顯示 sda 所有分區統計
關鍵指標解讀
| 欄位 | 含義 | 警戒閾值 |
%iowait | CPU 等待 I/O 佔比 | > 20% 持續 → 磁碟瓶頸 |
await | 平均 I/O 請求完成時間(ms) | SSD < 5ms,HDD < 20ms,超過 → 擁塞 |
svctm | 裝置服務時間(ms) | 接近 await → 裝置飽和 |
%util | 裝置帶寬使用率 | > 80% 持續 → 瓶頸 |
rrqm/s, wrqm/s | 合併讀/寫請求率 | 高表示順序存取好;低表示隨機存取 |
2. vmstat - 虛擬記憶體/系統整體快照
常用參數
vmstat 1 10 # 每1秒採樣10次
vmstat -a 1 # 顯示 active/inactive 記憶體
vmstat -d # 磁碟統計(較 iostat 簡略)
vmstat -s # 記憶體事件計數器摘要
關鍵欄位(預設輸出)
procs ---memory--- --swap-- --io-- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 0 123456 12345 67890 0 0 10 20 100 200 10 5 85 0
| 欄位 | 含義 | 判讀 |
r | 運行佇列長度(可執行進程數) | > CPU 核心數 2-3 倍 → CPU 壓力大 |
b | 不可中斷睡眠進程(通常等 I/O) | 持續 > 0 → I/O 瓶頸 |
si/so | swap in/out (KB/s) | 持續非零 → 記憶體不足 |
bi/bo | 磁碟讀/寫區塊數 | 配合 iostat 看 |
in | 中斷次數/秒 | 極高 → 裝置驅動/網路風暴 |
cs | 上下文切換次數/秒 | > 50000 → 進程/執行緒過多 |
us/sy/id/wa | 用戶/系統/閒置/等待I/O CPU% | wa 高 → I/O 瓶頸;sy 高 → 系統調用多 |
3. mpstat - 多核心 CPU 詳細統計
常用參數
mpstat -P ALL 1 # 顯示所有核心 + 平均,每1秒
mpstat -P 0 1 # 只看核心 0
mpstat -I SUM 1 # 顯示中斷統計摘要
輸出重點
- 單核心
%usr 或 %sys 持續 100% → 單執行緒瓶頸(如未並行化程式)。
%irq/%soft 高 → 硬體中斷/軟中斷負擔重(網卡、磁碟控制器)。
%guest/%gnice → 虛擬化環境下客體 CPU 佔用。
4. netstat / ss - 網路連線與協議統計
netstat 已棄用,建議改用 ss(iproute2),速度更快、資訊更全。
常用 ss 參數
| 指令 | 用途 |
ss -tuln | 顯示所有 TCP/UDP 監聽埠(數值模式,不解析服務名) |
ss -tulpn | 加上進程 PID/名稱(需 root) |
ss -s | 協議統計摘要(TCP、UDP、連線狀態計數) |
ss -i | 顯示 TCP 內部資訊(cwnd、rtt、重傳等) |
ss -o state established '( dport = :80 or sport = :80 )' | 篩選 HTTP 連線 |
netstat 經典對照(舊腳本相容)
netstat -tuln # ss -tuln
netstat -rn # ip route show
netstat -i # ip -s link
netstat -s # ss -s
5. nmon - Nigel's Monitor 全能互動式監控
安裝
sudo apt install nmon # Debian/Ubuntu
sudo dnf install nmon # RHEL/Fedora
sudo pacman -S nmon # Arch
互動操作鍵
| 鍵 | 功能 |
c | CPU 使用率 |
m | 記憶體使用率 |
d | 磁碟 I/O |
n | 網路 I/O |
r | 資源總覽(CPU+MEM+DISK+NET) |
k | 核心統計 |
t | Top 進程 |
. | 只顯示忙碌資源 |
q | 離開 |
錄製模式(離線分析/報表)
# 背景錄製 300 秒,每 10 秒採樣,輸出 CSV
nmon -f -s 10 -c 30 -m /var/log/nmon/
# 產生 .nmon 檔,可用 nmonchart (Excel 巨集) 或 nmon_analyser 轉圖表
綜合診斷流程圖
- 系統慢? 先
vmstat 1 5 看 r、wa、si/so。
- wa 高? 跑
iostat -xz 1 5 找壞掉的磁碟。
- r 高、wa 低? 用
mpstat -P ALL 1 看哪核心滿、pidstat 1 找吃 CPU 進程。
- si/so 高?
free -h、ps aux --sort=-%mem | head 找記憶體大戶。
- 網路延遲?
ss -i 看重傳、RTT;tcpretrans (bcc-tools) 看重傳細節。
自動化監控建議
- Prometheus +
node_exporter 持續採集上述指標。
- Grafana 儀表板預設模板(Node Exporter Full)涵蓋所有關鍵指標。
- 告警規則:
node_cpu_seconds_total{mode="iowait"} > 0.2、node_filesystem_avail_bytes < 10%、node_memory_MemAvailable_bytes < 500MB。
熟練這五大指令,配合 pidstat、dstat、bpftrace/bcc-tools 進階觀測,即可在無圖形介面的生產環境精準定位效能瓶頸,從「感覺慢」進化為「數據說話」的專業運維。