Linux系統(tǒng)如何尋找和殺掉僵尸進(jìn)程
2016-08-22 15:05:50
12447
Linux服務(wù)器上,多少會(huì)出現(xiàn)一些僵尸進(jìn)程,下面介紹如何快速尋找和消滅這些僵尸進(jìn)程的方法
首先,我們可以用top命令來查看服務(wù)器當(dāng)前是否有僵尸進(jìn)程,在下圖中可以看到僵尸進(jìn)程數(shù)的提示,如果數(shù)字大于0,那么意味著服務(wù)器當(dāng)前存在有僵尸進(jìn)程

下面,我們用ps和grep命令尋找僵尸進(jìn)程
ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'
命令注解:
-A 參數(shù)列出所有進(jìn)程
-o 自定義輸出字段 我們?cè)O(shè)定顯示字段為 stat(狀態(tài)), ppid(進(jìn)程父id), pid(進(jìn)程id),cmd(命令)這四個(gè)參數(shù)
因?yàn)闋顟B(tài)為 z或者Z的進(jìn)程為僵尸進(jìn)程,所以我們使用grep抓取stat狀態(tài)為zZ進(jìn)程
運(yùn)行結(jié)果參考如下
Z 12334 12339 /path/cmd
這時(shí),我們可以使用
kill -HUP 12339
來殺掉這個(gè)僵尸進(jìn)程
運(yùn)行后,可以再次運(yùn)行
ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'
來確認(rèn)是否將僵尸進(jìn)程殺死
如果kill 子進(jìn)程的無效,可以嘗試kill 其父進(jìn)程來解決問題,例如上面例子父進(jìn)程pid是 12334,那么我們就運(yùn)行
kill -HUP 12334
來解決問題