动态

详情 返回 返回

藍易雲:Linux系統ps命令 - 动态 详情

下面這份是面向生產環境的“<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 列,避免不同發行版默認列差異。

四、排障工作流程(可嵌入運維手冊)

flowchart LR
A[告警觸發/用户報障] --> B{CPU高/內存高/卡頓?}
B -- CPU高 --> C[ps -e -o ... --sort=-pcpu]
B -- 內存高 --> D[ps aux --sort=-%mem]
B -- 卡頓/D態多 --> E[ps -e -o pid,stat,cmd | grep ' D ']
C --> F{單進程還是多進程?}
D --> F
E --> G[ps -Tp PID 看線程熱點/IO等待]
F -- 單進程 --> H[ps -Tp PID 深挖線程/綁定核]
F -- 多進程 --> I[--forest 查父子/服務編排]
H & I --> J[記錄PID/採樣數據 -> 後續畫像&限流方案]

五、最佳實踐與風險控制

  • 統一團隊用法:<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> 與一鍵採樣腳本,納入巡檢與告警聯動。

user avatar maomaotou 头像 abai_681266b7f0de8 头像
点赞 2 用户, 点赞了这篇动态!
点赞

Add a new 评论

Some HTML is okay.