Linux 無圖形化工作管理器,top 是命令列下最核心的即時資源監控工具。讀懂 top,才能精準定位 CPU/記憶體瓶頸、發現殭屍進程、優化系統效能。
top 介面兩大區塊解讀
上半部:系統級統計摘要
top - 10:30:45 up 15 days, 3:22, 2 users, load average: 0.15, 0.10, 0.05
Tasks: 128 total, 1 running, 125 sleeping, 0 stopped, 2 zombie
%Cpu(s): 5.2 us, 1.3 sy, 0.0 ni, 93.0 id, 0.5 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 8192000 total, 4523100 used, 3668900 free, 256100 buffers
KiB Swap: 4194300 total, 0 used, 4194300 free, 1234500 cached
| 欄位 | 含義 | 關注重點 |
| load average | 1/5/15 分鐘平均負載 | 超過 CPU 核心數表示擁塞 |
| Tasks | 進程狀態統計 | zombie 殭屍進程 > 0 需處理 |
| %Cpu us/sy/id/wa | 用戶/系統/閒置/等待 I/O | wa 高 = 磁碟瓶頸;sy 高 = 系統調用過多 |
| Mem/Swap | 記憶體/交換分區使用 | Swap 用量大 = 實體記憶體不足 |
下半部:進程清單(預設依 CPU 降序)
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1234 mysql 20 0 2.5g 1.2g 15m S 12.5 15.2 5:32.10 mysqld
5678 www-data 20 0 350m 45m 8m S 3.2 0.6 0:45.20 nginx
| 欄位 | 含義 |
| PID | 進程 ID |
| USER | 擁有者 |
| PR/NI | 優先級/ Nice 值(負值=高優先) |
| VIRT | 虛擬記憶體總量(含共用庫、換出頁面) |
| RES | 常駐記憶體(實體 RAM 佔用)最實際 |
| SHR | 共用記憶體(動態庫等) |
| S | 狀態:R=運行、S=睡眠、D=不可中斷睡眠、Z=殭屍、T=停止 |
| %CPU | CPU 使用率(單核心 100% 基準) |
| %MEM | 實體記憶體佔比 |
| TIME+ | 累積 CPU 時間 |
| COMMAND | 啟動命令 |
進階互動熱鍵(大小寫敏感)
| 按鍵 | 功能 |
| M | 依記憶體使用率排序(大寫) |
| P | 依 CPU 使用率排序(預設,大寫) |
| T | 依 累積時間 排序 |
| u | 輸入用戶名,過濾特定用戶進程(小寫) |
| k | 輸入 PID + 信號(預設 15 SIGTERM),殺掉進程 |
| r | 輸入 PID + nice 值,重設優先級 |
| 1 | 切換顯示各 CPU 核心使用率 |
| c | 切換顯示完整命令行(含參數) |
| H | 切換執行緒模式(顯示每個執行緒) |
| q | 退出 |
殭屍進程(Z 狀態)處理流程
top 發現 Z 狀態進程,記下 PID 與父進程 PPID(需 ps -eo pid,ppid,stat,cmd | grep Z)
- 嘗試結束父進程(
kill -TERM PPID),讓父進程回收子進程退出碼
- 若父進程為 init (PID 1),殭屍將由 init 自動回收,無需干預
- 頻繁出現殭屍 = 程式碼缺陷(未
wait() 子進程),需開發修復
啟動參數速查
top -u username # 僅顯示特定用戶
top -p 1234,5678 # 僅監控指定 PID
top -d 2 # 更新間隔 2 秒(預設 3 秒)
top -b -n 1 > top.log # 批次模式輸出一次(適合腳本記錄)
現代替代工具
- htop:彩色、滑鼠支援、樹狀檢視、捲動、篩選更直觀
- atop:歷史記錄、磁碟/網路 I/O 細分、永久日誌
- glances:跨平台、Web 介面、瓶頸自動高亮
熟練 top 熱鍵與欄位含義,是 Linux 系統管理員「望聞問切」的基本功;配合 htop/atop 進行深度分析,效能調優不再盲目。