服務器上不定期的會出現僵尸進程,占用資源很麻煩啊。比如找出那些運行超過1個小時的進程之類的
2 回答

元芳怎么了
TA貢獻1798條經驗 獲得超7個贊
首先,僵尸進程不占用內存和CPU,只占用一個PID和對應的進程結構存儲空間。
其次,出現僵尸進程,通常是server程序沒寫好,建議首先考慮修復這個問題
最后,用ps aux可以看出一個進程是否是僵尸進程(STAT=Z)、它的啟動時間(START TIME,或者執行stat /proc/PID獲取創建時間)。有了這些數據,你可以很容易地寫個簡單腳本來濾出那些進程。

繁星淼淼
TA貢獻1775條經驗 獲得超11個贊
1. 應該先檢查下程序, 是不是 沒有對 子進程 調用 wait或者waitpid函數回收進程資源, 或者把子進程掛在init進程下面, 由系統回收資源。 沒有回收 進程資源的進程 就是會zombie狀態。
2. 作為一個應急的處理辦法, 把狀態是Zombie的進程篩選出來, 然后殺了也可以。
kill -9 $( ps aux | awk '{ if( $8 == "Z" ) { print $2 ; } }' )
- 2 回答
- 0 關注
- 138 瀏覽
添加回答
舉報
0/150
提交
取消