掌握進程檢視是 Linux 系統管理與效能分析的基本功。本文詳細解析 ps 多維度過濾、top 互動式監控、pstree 父子關係樹狀顯示,並附輸出欄位含義速查表。
ps [選項]
| 指令 | 用途 |
|---|---|
ps aux | 所有進程詳細資訊 (BSD 風格) |
ps -ef | 所有進程標準格式 (System V 風格) |
ps -eLf | 顯示執行緒 (LWP) |
ps -ejH | 樹狀顯示進程層級 |
ps axjf | 另一種樹狀格式 |
ps -U root -u root -N | 非 root 使用者進程 |
ps -u username | 指定使用者進程 |
ps -C nginx | 指定命令名進程 |
ps -o pid,user,cmd,pcpu,pmem -p 1234 | 自定義欄位查詢指定 PID |
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 123456 7890 ? Ss 08:00 0:01 /sbin/init
STAT 狀態碼:R 運行/就緒、S 可中斷睡眠、D 不可中斷睡眠 (通常 I/O)、Z 殭屍、T 停止、s 會話領導者、+ 前台進程、l 多執行緒VSZ 虛擬記憶體大小 (KB)、RSS 實際駐留記憶體 (KB)top

| 按鍵 | 功能 |
|---|---|
| q | 退出 |
| h | 說明 |
| M | 依記憶體排序 |
| P | 依 CPU 排序 (預設) |
| T | 依累積時間排序 |
| 1 | 切換 CPU 核心顯示 |
| u | 篩選使用者 |
| k | 殺死進程 (輸入 PID + 信號) |
| r | 重設優先序 (renice) |
| c | 顯示完整命令路徑 |
| W | 寫入設定檔 (~/.toprc) |
top -d 2 # 更新間隔 2 秒
top -u username # 只看某使用者
top -p 123,456 # 只監控指定 PID
top -b -n 1 > top.log # 批次模式輸出一次 (適合腳本)
pstree # 完整樹狀
pstree -p # 顯示 PID
pstree -u # 顯示使用者
pstree -a # 顯示完整命令參數
pstree username # 只看某使用者進程樹
pstree -H PID # 高亮顯示指定 PID 路徑

pidstat -u -p ALL 1 類 vmstat 但針對進程cat /proc/PID/status、ls -l /proc/PID/fd/ 最底層資訊# 找出佔用 CPU 前 5 的進程
ps aux --sort=-%cpu | head -6
# 找出佔用記憶體前 5
ps aux --sort=-%mem | head -6
# 找出某程式所有執行緒
ps -eLf | grep nginx
# 找出殭屍進程
ps aux | awk '$8 ~ /Z/'
# 監控特定進程 CPU/記憶體趨勢
pidstat -u -r -p $(pgrep -d, -x java) 2 10
ps 適合腳本靜態擷取、top/htop 適合人工即時觀察、pstree 適合理清父子依賴。建議日常主力改用 htop,腳本自動化用 ps + awk,效能分析配合 pidstat 與 /proc 深入溯源。