2013-06-28 194 views
3

有2個殭屍進程在我的服務器上運行,我無法用kill -9命令殺死它們。無法殺死殭屍進程kill -9

$ ps aux | awk '{ print $8 " " $2 }' | grep -w Z

輸出:

ž8511 ž9002

可有人請我建議任何其他更好的方式來殺死他們。

謝謝,

Sandeep。

+0

瞭解更多關於[殭屍進程(http://en.wikipedia.org/維基/ Zombie_process)。你不需要也不能殺死他們,因爲他們是*殭屍*。你應該確保有人爲他們「waitpid」。 –

回答

8

基本上 - 你不行。而這不一定是壞事:

http://www.linuxsa.org.au/tips/zombies.html

殭屍死的過程。你不能殺死死人。所有進程 最終都會死亡,當它們變成殭屍時。他們幾乎沒有資源消耗 ,這是預料之中的,因爲他們已經死了! 殭屍的原因是殭屍的父母(進程)可以 檢索殭屍的退出狀態和資源使用統計。母親 通過使用wait()系統調用之一向操作系統發出信號,告訴它不再需要殭屍 。

當進程死亡時,其子進程全部成爲 進程號1的子進程,這是init進程。 Init始終等待孩子死亡,這樣他們就不會成爲殭屍了。

如果你有殭屍進程,這意味着那些殭屍並不是 被父母等待(查看ps -l顯示的PPID)。你有 有三個選擇:修復父進程(讓它等待);殺死父母的 ;或與之共存。請記住,與它一起生活並不困難 ,因爲殭屍在ps的輸出 中佔用了多餘的一行。

如果你碰巧知道的家長,您可以發出對父PID此命令:

kill -s SIGCHLD pid