1.可以先試用top 指令檢視是否有僵屍程序
在紅色表示的地方 如果zombie 大于“0”表示伺服器目前存在僵屍程序
2.如果存在僵屍程序,可以使用指令
ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'
指令注解:
-A 參數列出所有程序
-o 自定義輸出字段 我們設定顯示字段為 stat(狀态), ppid(程序父id), pid(程序id),cmd(指令)這四個參數
因為狀态為 z或者Z的程序為僵屍程序,是以我們使用grep抓取stat狀态為zZ程序
3.運作結果參考如下:
Z 12334 12339 /path/cmd
這時,我們可以使用 kill -HUP 12339來殺掉這個僵屍程序
運作後,可以再次運作ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'來确認是否将僵屍程序殺死
如果kill 子程序的無效,可以嘗試kill 其父程序來解決問題,例如上面例子父程序pid是 12334,那麼我們就運作
kill -HUP 12334
4.運作結果參考如下;
這裡一共出現了9個僵死程序,我們需要把它們都幹掉,執行下面的指令:
kill -9 8310
這時你再執行查找僵死的程序,發現所有僵死程序都沒了.
5.如過查出來的程序很多 并且每個僵屍死程序的父程序又不一樣
ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' | xargs kill -9
直接查找僵死程序,然後将父程序殺死~
本文轉自 佛哒 51CTO部落格,原文連結:http://blog.51cto.com/fodaa/1371637,如需轉載請自行聯系原作者