Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Linux 故障診斷必備命令速查手冊:last、messages、lsb_release、df、top、iostat 深度解析

編輯:Linux 系統常見問題解答

線上故障不等人,熟練掌握核心診斷命令能讓你在幾分鐘內定位問題而非幾小時。本文精選 6 大高頻命令,結合實戰輸出解讀,構建你的「排障肌肉記憶」。

1. last - 登錄審計與入侵跡象排查

last [-n 數量] [-f 文件] [用戶] [終端]
last -n 20                    # 最近 20 條登錄記錄
last -i                       # 顯示 IP 而非主機名
last -x                       # 包含關機、重啟、運行級別變更
last reboot                   # 歷史重啟記錄

關鍵場景: 懷疑被暴力破解 → lastb 查看失敗登錄;排查非預期重啟 → last -x | grep reboot 對比業務發布時間。

2. /var/log/messages - 系統級錯誤總匯

幾乎所有內核、服務、硬件錯誤都在這裡: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)

3. lsb_release - 發行版身份證

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。

4. df -h - 磁盤空間一目了然

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 耗盡(海量小文件導致無法創建新文件但磁盤還有空間)。

5. top - 實時資源儀表盤(深度解讀)

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 嚴重過載
CPUus (用戶態)、sy (內核態)、wa (I/O等待)、st (虛擬化偷取)wa > 20% 磁盤瓶頸;st > 10% 宿主機超售
內存used/free/buffers/cachedLinux 將空閒內存用作 cache,**可用內存 ≈ free + buffers + cached**;關注 Swap used 持續增長 → 真缺內存
進程PID、USER、%CPU、%MEM、TIME+、COMMAND按 M 排序內存、P 排序 CPU、c 顯示完整命令行

交互熱鍵

  • 1:切換顯示所有 CPU 核心佔用
  • H:顯示線程
  • u:過濾用戶
  • k:殺進程(輸入 PID、信號)
  • W:保存配置到 ~/.toprc

6. iostat - 磁盤 I/O 顯微鏡

iostat -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 判斷設備繁忙度。

組合拳實戰:從「服務器慢」到根因定位

  1. uptime / top 看負載高在 CPU、內存、I/O?
  2. 若 CPU 高 → pidstat -u 1 -p PID 看線程 → perf top -p PID 看熱點函數 → strace -p PID 看系統調用。
  3. 若內存高 → pmap -x PID 看映射 → valgrind/jemalloc 尋找洩漏。
  4. 若 I/O 高 → iostat -x 1 看哪塊盤 → pidstat -d 1 -p PID 看進程讀寫 → lsof -p PID 看打開文件 → 業務代碼優化索引/批量寫入/異步日志。
  5. 若負載高但 CPU/內存/I/O 都不高 → ps -eo stat,pid,cmd | grep ^D 看不可中斷睡眠進程(通常是 NFS/磁盤掛起)。

工具箱擴展: vmstat(系統級 CPU/內存/I/O 綜合)、sar(歷史數據)、netstat/ss(網絡連接)、tcpdump(抓包)、strace(系統調用)、perf(性能分析)、dmesg(內核環形緩存)。

Copyright © Windows教程網 All Rights Reserved