Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux ps 指令進階實戰:進程查看、篩選、排序、樹狀顯示完全指南

編輯:關於 Linux

ps 是 Linux 進程管理的基石,雖無 top/htop 的即時互動,但支援豐富的篩選、排序、格式化輸出,極適合腳本化、一次性查詢、歷史記錄。本文系統整理 BSD/UNIX 兩種語法風格、核心參數、實戰範例(依用戶、依名稱、依 CPU/記憶體排序、樹狀父子關係),助您精準掌控進程全貌。

兩大語法風格:別混用

風格特徵範例常用系統
BSD選項無連字號ps auxLinux、FreeBSD、macOS
UNIX/Linux (POSIX)選項有連字號ps -efLinux、Solaris、AIX

關鍵差異:ps aux ≠ ps -aux。-u 篩選用戶,u 顯示詳細格式。混用可能導致誤解。本文以 UNIX 風格 (連字號) 為主,並標註 BSD 對應寫法。

核心參數速查

參數功能BSD 對應
-e / -A所有進程a (含其他用戶終端機進程)
-f完整格式 (UID, PID, PPID, C, STIME, TTY, TIME, CMD)u (USER, %CPU, %MEM, VSZ, RSS, STAT, START, TIME, COMMAND)
-F超完整格式 (加上 SZ, RSS, PSR, STIME)-
-u user指定有效用戶 (可多個逗號分隔)U user (真實用戶)
-C cmd依命令名稱篩選c (只顯示命令名)
-p pid依 PID 篩選 (可多個逗號分隔)p pid
--sort=key排序鍵,+ 升序、- 降序,可多鍵逗號分隔-
--forestASCII 樹狀顯示父子關係f (BSD 風格樹狀)
-o fmt自訂輸出格式 (如 pid,user,%cpu,%mem,cmd)o fmt
-L顯示執行緒 (LWP, NLWP)H / -L

實戰範例集

1. 顯示所有進程

ps -ef           # UNIX 標準
ps aux           # BSD 風格 (含無終端機進程)
ps -ef | less    # 分頁瀏覽

2. 依用戶篩選

ps -f -u www-data
ps -f -u root,www-data,nginx   # 多用戶

3. 依命令名稱/ PID 篩選

ps -C nginx
ps -C nginx,php-fpm
ps -p 1234,5678

4. 依 CPU/記憶體排序,找資源大戶

# CPU 降序、記憶體升序,顯示前 10
ps aux --sort=-%cpu,+%mem | head -10

# 只看前 5 大 CPU 進程
ps aux --sort=-%cpu | head -5

# 自訂格式 + 排序
ps -eo pid,user,%cpu,%mem,cmd --sort=-%cpu | head -20

常用排序鍵:%cpu、%mem、pid、ppid、etime (經過時間)、cputime、rss (常駐記憶體)、vsz (虛擬記憶體)。

5. 樹狀顯示父子關係

ps -f --forest -C nginx
ps -ef --forest | grep -E 'nginx|apache'
# 輸出範例:
# root     1234  1  0 09:00 ?  00:00:00 nginx: master process
# www-data 1235 1234  0 09:00 ?  00:00:00  \_ nginx: worker process
# www-data 1236 1234  0 09:00 ?  00:00:00  \_ nginx: worker process

注意:--sort 與 --forest 邏輯衝突(排序會破壞樹狀順序),勿同時使用。

6. 顯示執行緒 (LWP)

ps -Lf -p           # 顯示指定進程的所有執行緒
ps -eLf | grep      # 全系統執行緒視圖
# 關鍵欄位:LWP (執行緒 ID)、NLWP (執行緒總數)

7. 自訂輸出格式 (適合腳本解析)

ps -eo pid,ppid,user,group,%cpu,%mem,vsz,rss,stat,start,time,cmd --sort=-%cpu
# 輸出可直接餵給 awk/csvtool

8. 找出僵屍進程

ps -eo stat,pid,ppid,cmd | awk '$1 ~ /^Z/ {print}'
# STAT 欄位 Z = 僵屍

9. 找出高佔用記憶體進程 (RSS 降序)

ps aux --sort=-rss | head -20

進階組合:watch 定期刷新

watch -n 2 'ps aux --sort=-%cpu | head -20'
watch -n 5 'ps -ef --forest | grep nginx'

常見陷阱

  • 用戶名截斷:用戶名 > 8 字元時 ps 顯示 UID 而非名稱。用 -o user=USER 強制寬欄或 ps -eo user:20 指定寬度。
  • 參數順序:ps -ef --forest 正確;ps --forest -ef 可能報錯(部分版本)。
  • ps 是快照,非即時。需即時監控請用 top/htop/pidstat。

ps vs top vs htop vs pidstat 選型指南

工具適用場景
ps一次性查詢、腳本抓取、精細篩選/排序/格式化、樹狀父子關係
top互動式即時監控、快速找熱點進程
htop增強版 top:滾動、搜尋、樹狀、殺進程、更好 UI
pidstat腳本化定期採樣、執行緒級 CPU/記憶體、歷史趨勢

熟練 ps 的篩選、排序、樹狀、自訂格式,配合 grep/awk/watch,讓進程管理從「看一眼」進化為「精準查詢、自動化巡檢、異常自動告警」的專業運維工作流。

Copyright © Windows教程網 All Rights Reserved