線上故障不等人,熟練掌握核心診斷命令能讓你在幾分鐘內定位問題而非幾小時。本文精選 6 大高頻命令,結合實戰輸出解讀,構建你的「排障肌肉記憶」。
last [-n 數量] [-f 文件] [用戶] [終端]
last -n 20 # 最近 20 條登錄記錄
last -i # 顯示 IP 而非主機名
last -x # 包含關機、重啟、運行級別變更
last reboot # 歷史重啟記錄
關鍵場景: 懷疑被暴力破解 → lastb 查看失敗登錄;排查非預期重啟 → last -x | grep reboot 對比業務發布時間。
幾乎所有內核、服務、硬件錯誤都在這裡:OOM Killer、磁盤錯誤、網卡掉線、SELinux 拒絕、硬件溫度報警。
tail -f /var/log/messages # 實時跟蹤
grep -i error /var/log/messages # 過濾錯誤
grep -i "oom\|kill" /var/log/messages # 內存溢出殺進程
journalctl -u sshd -f # systemd 系統查看服務日志(替代 messages)
lsb_release -a
# LSB Version: :core-4.1-amd64:core-4.1-noarch
# Distributor ID: CentOS
# Description: CentOS Linux release 7.9.2009 (Core)
# Release: 7.9.2009
# Codename: Core
腳本中判斷發行版分發安裝包:lsb_release -is、-rs、-cs。
df -h
# Filesystem Size Used Avail Use% Mounted on
# /dev/sda3 92G 20G 67G 23% /
# /dev/sda1 1.9G 42M 1.8G 3% /boot
# tmpfs 1014M 0 1014M 0% /dev/shm
進階: df -i 查看 inode 耗盡(海量小文件導致無法創建新文件但磁盤還有空間)。
top - 10:01:23 up 126 days, 14:29, 2 users, load average: 1.15, 1.42, 1.44
Tasks: 183 total, 1 running, 182 sleeping, 0 stopped, 0 zombie
%Cpu(s): 6.7 us, 0.4 sy, 0.0 ni, 92.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 8306544 total, 7775876 used, 530668 free, 79236 buffers
KiB Swap: 2031608 total, 2556 used, 2029052 free, 4231276 cached
| 區域 | 關鍵指標 | 異常判斷閾值/含義 |
|---|---|---|
| 負載 | load average (1/5/15min) | 長期 > CPU 核心數 × 0.7 需關注;> 核心數 × 2 嚴重過載 |
| CPU | us (用戶態)、sy (內核態)、wa (I/O等待)、st (虛擬化偷取) | wa > 20% 磁盤瓶頸;st > 10% 宿主機超售 |
| 內存 | used/free/buffers/cached | Linux 將空閒內存用作 cache,**可用內存 ≈ free + buffers + cached**;關注 Swap used 持續增長 → 真缺內存 |
| 進程 | PID、USER、%CPU、%MEM、TIME+、COMMAND | 按 M 排序內存、P 排序 CPU、c 顯示完整命令行 |
~/.toprciostat -xmt 1 10 # -x擴展統計 -m MB單位 -t 顯示時間戳 1秒間隔 10次
# 輸出關鍵欄:
# Device r/s w/s rMB/s wMB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util
# sda 12.3 45.6 0.5 1.2 0.1 2.3 0.8 4.8 2.1 4.5 0.12 42.3 26.1 1.8 10.5
黃金指標:
%util:設備帶寬利用率,接近 100% 表示飽和(但 RAID/SSD 並行度高時可能 >100% 仍正常)。r_await / w_await:平均讀/寫延遲(毫秒),HDD 通常 < 10ms,SSD < 1ms,超過 20ms 應用可感知卡頓。aqu-sz:平均隊列長度,持續 > 1 表示請求堆積。svctm:平均服務時間,配合 %util 判斷設備繁忙度。uptime / top 看負載高在 CPU、內存、I/O?pidstat -u 1 -p PID 看線程 → perf top -p PID 看熱點函數 → strace -p PID 看系統調用。pmap -x PID 看映射 → valgrind/jemalloc 尋找洩漏。iostat -x 1 看哪塊盤 → pidstat -d 1 -p PID 看進程讀寫 → lsof -p PID 看打開文件 → 業務代碼優化索引/批量寫入/異步日志。ps -eo stat,pid,cmd | grep ^D 看不可中斷睡眠進程(通常是 NFS/磁盤掛起)。工具箱擴展: vmstat(系統級 CPU/內存/I/O 綜合)、sar(歷史數據)、netstat/ss(網絡連接)、tcpdump(抓包)、strace(系統調用)、perf(性能分析)、dmesg(內核環形緩存)。