當你接手一台 Linux 伺服器,第一時間想掌握系統「健康狀態」,不需要安裝複雜的監控套件,系統內建的幾個經典指令就能提供極具價值的第一手資訊。本文整理了網路、磁碟、CPU、記憶體、I/O 與進程六大面向的核心指令,並搭配實戰輸出範例,幫你快速建立效能基準線。
輸入 ifconfig 即可列出所有網卡資訊:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.144.81.226 netmask 255.255.240.0 broadcast 10.144.95.255
ether 00:16:3e:02:04:ba txqueuelen 1000 (Ethernet)
RX packets 69775 bytes 91364566 (87.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 26057 bytes 1937311 (1.8 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
RX packets 286 bytes 32054 (31.3 KiB)
TX packets 286 bytes 32054 (31.3 KiB)
關鍵欄位速查:
ethX:實體網卡編號,有幾個就代表幾張網卡inet / netmask / broadcast:IP、子網路遮罩、廣播位址RX/TX packets/bytes:收發封包數與流量,快速判斷是否有異常爆量errors/dropped/overruns:非零值通常暗示驅動、纜線或交換器埠問題netstat -antup(或 ss -antup)可列出所有 TCP/UDP 連線:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1234/nginx tcp 0 0 115.28.204.58:22 59.71.67.114:21489 ESTABLISHED 5678/sshd udp 0 0 0.0.0.0:123 0.0.0.0:* 9101/ntpd
實戰用途:
LISTEN)ESTABLISHED 的來源 IP 與 PIDnetstat -ant | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'16:59:52 up 4 days, 18:20, 1 user, load average: 0.09, 0.04, 0.05 USER TTY LOGIN@ IDLE JCPU PCPU WHAT root pts/0 16:51 0.00s 0.06s 0.00s w
Load Average 三數值含義: 分別為 1、5、15 分鐘內「可執行佇列 + 不可中斷睡眠」進程的平均數量。
load >> CPU cores 且 %iowait 高 → 磁碟瓶頸;若 %user/%sys 高 → 運算瓶頸Filesystem Size Used Avail Use% Mounted on /dev/xvda1 40G 2.1G 36G 6% / devtmpfs 489M 0 489M 0% /dev tmpfs 497M 0 497M 0% /dev/shm
必看欄位: Use% 超過 80% 需規劃清理或擴容;Mounted on 確認關鍵目錄(/var, /home, /data)是否獨立分區,避免單一分區滿載拖垮整機。
total used free shared buff/cache available Mem: 992M 918M 74M 19M 531M 716M Swap: 0B 0B 0B
重點解讀:
free 更具參考價值si/so(vmstat)頻繁,代表實體記憶體不足Device r/s w/s rkB/s wkB/s await %util xvda 0.1 0.3 0.9 5.1 2.1 0.5%
黃金指標:
%util 接近 100% → 裝置飽和await > 20 ms(SSD)或 > 100 ms(HDD)→ 延遲過高rkB/s + wkB/s 接近裝置理論帶寬 → 吞吐瓶頸USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.3 188792 3804 ? Ss Mar15 0:10 /usr/lib/systemd/systemd root 123 2.1 1.2 456789 123456 ? Sl 10:00 5:23 java -jar app.jar
常用組合技:
ps aux --sort=-%cpu | head -6ps aux --sort=-%mem | head -6pstree -p 或 ps -ef --forest將上述指令封裝成 health_check.sh,排程每 5 分鐘跑一次並推送至 Grafana / Prometheus / 鈉釘機器人,即可構建零成本監控閉環:
#!/bin/bash
echo "=== $(date) ==="
echo "Load: $(uptime | awk -F'load average:' '{print $2}')"
echo "Mem: $(free -h | awk '/Mem:/ {print $3\"/\"$2}')"
echo "Disk: $(df -h / | awk 'NR==2 {print $5}')"
echo "Net: $(ss -s | awk '/TCP:/ {print $2}') connections"
iostat -x 1 2 | tail -n +4 | awk '{print $1,$12,$10}' | column -t
小結: 這七個指令無需安裝、零依賴、跨發行版通用,是 Linux 運維「隨身聽診器」。熟練解讀其輸出,勝過裝十套監控 Agent 卻看不懂圖表。下次 SSH 進機器,先跑一遍 w; df -h; free -h; iostat -x 1 2; ps aux --sort=-%cpu | head,系統大體狀況盡在掌握。