Linux服務器上,多少會出現一些僵尸進程,下面介紹如何快速尋找和消滅這些僵尸進程的方法
首先,我們可以用top命令來查看服務器當前是否有僵尸進程,在下圖中可以看到僵尸進程數的提示,如果數字大于0,那么意味著服務器當前存在有僵尸進程
下面,我們用ps和grep命令尋找僵尸進程
ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'
命令注解:
-A 參數列出所有進程
-o 自定義輸出字段 我們設定顯示字段為 stat(狀態), ppid(進程父id), pid(進程id),cmd(命令)這四個參數
因為狀態為 z或者Z的進程為僵尸進程,所以我們使用grep抓取stat狀態為zZ進程
運行結果參考如下
Z 12334 12339 /path/cmd
這時,我們可以使用kill -HUP 12339來殺掉這個僵尸進程
運行后,可以再次運行ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'來確認是否將僵尸進程殺死
如果kill 子進程的無效,可以嘗試kill 其父進程來解決問題,例如上面例子父進程pid是 12334,那么我們就運行
kill -HUP 12334
轉載于:https://blog.51cto.com/13272050/2073771