要有效監控與控制系統進程,首先必須掌握當前進程狀態。ps 命令是最基礎也最強大的進程查看工具,能顯示正在運行的進程、運行狀態、是否僵死、資源佔用情況等關鍵資訊。絕大多數進程資訊皆可透過 ps 獲取。
需注意 ps 提供的是靜態快照,非動態連續監控;若需即時監控,請使用 top 工具。而 kill 則用於終止進程。
ps 提供豐富選項,常用組合如下:
| 參數 | 說明 |
|---|---|
l | 長格式輸出 |
u | 按用戶名與啟動時間排序顯示 |
j | 任務格式顯示 |
f | 樹狀結構顯示進程關係 |
a | 顯示所有用戶的所有進程 |
x | 顯示無控制終端的進程 |
r | 僅顯示運行中進程 |
ww | 防止參數被截斷,完整顯示 |
最常用的組合為 aux 或 lax,搭配 f 參數可呈現樹狀結構。
| 欄位 | 含義 |
|---|---|
| USER | 進程擁有者 |
| PID | 進程識別碼 |
| PPID | 父進程 ID |
| %CPU | CPU 佔用百分比 |
| %MEM | 記憶體佔用百分比 |
| NI | Nice 值,數值越大佔用 CPU 越少 |
| VSZ | 虛擬記憶體大小 (KB) |
| RSS | 駐留記憶體頁數 (實體記憶體佔用) |
| TTY | 終端機 ID |
| STAT | 進程狀態碼(詳見下表) |
| WCHAN | 等待中的資源名稱 |
| START | 進程啟動時間 |
| TIME | CPU 累計使用時間 |
| COMMAND | 啟動命令與參數 |
| 代碼 | 含義 |
|---|---|
| D | 不可中斷睡眠 (通常為 I/O 進程) |
| R | 運行中或就緒隊列中 |
| S | 睡眠狀態 |
| T | 停止或被追蹤 |
| Z | 殭屍進程 |
| < | 高優先級進程 |
| N | 低優先級進程 |
| L | 頁面鎖定在記憶體中 |
| s | 進程領導者 (有子進程) |
| l | 多線程進程 |
| + | 前台進程組 |
# 分頁查看所有進程
ps -aux | more
# 輸出至檔案再分頁查看
ps -aux > ps001.txt
more ps001.txt
| 命令 | 信號 | 作用 |
|---|---|---|
kill -STOP [pid] | SIGSTOP (17,19,23) | 暫停進程,不終結 |
kill -CONT [pid] | SIGCONT (19,18,25) | 恢復已暫停進程 |
kill -KILL [pid] | SIGKILL (9) | 強制立即終止,不執行清理 |
kill -9 -1 | SIGKILL | 終止當前用戶擁有的所有進程 |
關鍵提醒: SIGKILL 與 SIGSTOP 無法被捕捉、阻塞或忽略,是終極控制手段;其他信號則可被程式處理。