如何殺掉殭屍進程

有時候kill命令在unix中似乎並不好使,在使用kill pid或者kill -9 pid之後,仍然有很多進程頑固的留存,並且顯示爲進程。這些進程就成爲了殭屍進程,如果用top命令看一下,頂部就顯示殭屍進程的數目了。defunct進程的產生有兩種可能:一種是這個程序本身就有bug,另外就是用戶執行了非正常操作。這兩種可能造成了某個進程被打斷與父進程或/和子進程的聯繫,這個進程就成了殭屍~
你的系統有沒有這類進程呢?首先用來分析一下:
$ ps -A | grep defunct
假定顯示出來這樣的結果:
8328 ? 00:00:00 mono <defunct>
25822 ? 00:00:00 ruby <defunct>
即使你再次妄圖使用kill命令殺之與無形之中,仍然發現它還頑強的活着。使用pstree命令查找mono和ruby的父進程,或者如下命令列出defunct進程的父進程:
$ ps -ef | grep defunct | more
假定結果如下,PPID就是父進程的pid號:
UID PID PPID …
—————————————————————
kenno 8328 6757 0 Mar22 ? 00:00:00 [mono] <defunct>
kenno 18803 18320 0 Apr02 ? 00:00:00 [ruby] <defunct>
接下來就可以使用kill -9 6757來殺掉父進程,然後通過ps -A | grep defunct驗證一下效果。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章