下面這份是面向生產環境的“<span style="color:red">ps 實戰打法</span>”,目標:低成本、快定位、可腳本化。📊
一、核心認知(先把方向定準)
- <span style="color:red">ps = 進程快照</span>(瞬時視圖),與
top/htop的持續刷新互補。 - 兩套參數系:<span style="color:red">BSD 風格</span>(如
ps aux)與 <span style="color:red">UNIX 風格</span>(如ps -ef)。團隊需統一,避免腳本歧義。 - 輸出字段可自由組合:
-o pid,ppid,stat,etime,pcpu,pmem,cmd;排序用--sort=;寬輸出用-ww。
二、常用字段速覽(建議納入SOP)
| 字段 | 含義 | 關鍵判斷 |
|---|---|---|
| <span style="color:red">PID/PPID</span> | 進程/父進程ID | 甄別孤兒、定位來源鏈路 |
| <span style="color:red">STAT</span> | 進程狀態(R/S/D/T/Z)+標記 | D不可中斷I/O,Z殭屍,+前台 |
| <span style="color:red">%CPU/%MEM</span> | 資源佔比 | 快速篩高消耗 |
| <span style="color:red">RSS/VSZ</span> | 常駐內存/虛擬內存 | 結合%MEM判斷是否泄漏 |
| <span style="color:red">ETIME/TIME</span> | 運行時長/累計CPU時長 | 長跑型與短刺型進程區分 |
| <span style="color:red">CMD</span> | 命令行 | 配合-ww避免截斷 |
三、五個高頻場景與命令(每條都可直接上生產)
1)全量進程(UNIX 風格),腳本友好
ps -e -o pid,ppid,tty,stat,etime,pcpu,pmem,rss,cmd --sort=-pcpu -ww
解釋:-e全量;-o自定義列;--sort=-pcpu按CPU降序;-ww防命令行被截斷。用於<span style="color:red">CPU突發定位</span>。
2)TOP10 內存大户(BSD 風格)
ps aux --sort=-%mem | head -n 10
解釋:aux為BSD合集;--sort=-%mem內存降序;head取前十。面向<span style="color:red">內存壓測與泄漏初篩</span>。
3)進程樹與從屬關係
ps -e --forest -o pid,ppid,stat,cmd -ww
解釋:--forest繪製樹形關係,輔以pid/ppid一眼看清<span style="color:red">鏈路與守護結構</span>。
4)按進程名精準抓取(無 grep 誤傷)
ps -C nginx -o pid,ppid,stat,pcpu,pmem,etime,cmd -ww
解釋:-C按可執行名匹配,避免 grep 把自己匹配進去,適合<span style="color:red">服務級巡檢</span>。
5)線程級排查(性能熱點/死鎖線索)
ps -Tp <PID> -o pid,tid,stat,psr,pcpu,etime,comm -ww
解釋:-T展示線程;psr顯示運行CPU核;結合pcpu/etime研判<span style="color:red">熱點線程與抖動CPU</span>。
補充:批處理/監控場景可加<span style="color:red">--no-headers</span>去表頭,利於機器解析;容器內建議固定-o列,避免不同發行版默認列差異。
四、排障工作流程(可嵌入運維手冊)
五、最佳實踐與風險控制
- 統一團隊用法:<span style="color:red">固定輸出模板</span> 與 <span style="color:red">排序規則</span>,減少口徑差異。
- 大規模主機:結合
watch -n1 'ps -e -o ... --sort=-pcpu | head'做輕量熱力觀察;進入深水區再上perf/ebpf。 - 殭屍與D態:
STAT=Z通常由父進程未wait();STAT=D多為塊I/O等待,<span style="color:red">別急殺</span>,先查磁盤/網絡路徑。🧠
六、兩套參數體系差異(簡表)
| 風格 | 示例 | 何時選用 |
|---|---|---|
| <span style="color:red">UNIX</span> | ps -ef, ps -e -o ... |
可讀性強、腳本穩定、跨發行版更一致 |
| <span style="color:red">BSD</span> | ps aux |
交互排查快、命令更短 |
七、結論(清晰立場)
- 日常巡檢:用
ps -e -o … --sort+<span style="color:red">-ww</span>做統一視圖。 - 專項分析:線程級用
ps -Tp;結構關係用--forest。 - 腳本化:加
<span style="color:red">--no-headers</span>與固定列,確保機器可讀。🚀
如需,我可以基於你現網字段規範,輸出一份可直接落地的 <span style="color:red">ps 標準化模板</span> 與一鍵採樣腳本,納入巡檢與告警聯動。