十二 11

有时候kill命令在*nix中似乎并不好使,在使用kill pid或者kill -9 pid之后,仍然有很多进程顽固的留存,并且显示为<defunct>进程。这些进程就成为了僵尸进程,如果用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验证一下效果。

参考:Kenno’s OpenNote

附送网站Mac Vim,运行在苹果电脑上的Vim:Mac Vim (Again)

Powered by Zoundry Raven

相关日志

20 Responses to “如何杀掉defunct的进程?”

  1. Hailo 说:

    沙发不?
    可惜我不懂*nix,悲剧。
    Hailo的最新blog:把RSS加入了我烧网 My ComLuv Profile

    第三眼 回复:

    第一排茶几

  2. 学习了,我一直在办公室被誉为专家,和你比起来差远了呀。
    本来我是沙发,可是提交了后半天没反应,刷新了一下就有人抢前面去了!

    第三眼 回复:

    我晕,我发了篇日志就超过专家了啊,不可能的~

  3. evlos 说:

    嘿嘿 Linux大湿 ~ 我来学习一下 ~
    evlos的最新blog:为博客换上一套漂亮的圣诞礼服 My ComLuv Profile

    第三眼 回复:

    我这算不上湿~

  4. awu 说:

    太有用了~~~
    awu的最新blog:QT学习笔记-按钮应用 My ComLuv Profile

    第三眼 回复:

    管理员可能会用得多一些,毕竟不可能总是通过重启来解决一些问题。

  5. kaka 说:

    只要不出现问题。基本我很少管这些东西。反正公司电脑~~

    第三眼 回复:

    就是因为今天遇到这问题了…呵呵,否则我也不管它

  6. 漠岚 说:

    收藏起来 ,
    漠岚的最新blog:第一个html页面 My ComLuv Profile

  7. GEZ鸽子 说:

    不错学习了~

  8. 叶松 说:

    下回试一下

  9. 1v77 说:

    是不是只有在Linux下才能出现这个问题?我的windows中还没遇到过…
    1v77的最新blog:郑重声明 My ComLuv Profile

    第三眼 回复:

    bingo,Linux下的问题

    Auston Jary 回复:

    @第三眼,
    怪不得怎么看不懂~
    Auston Jary的最新blog:University Student AND Web Ninja My ComLuv Profile

  10. 娱乐新闻 说:

    没有想到里面的学问这么 大
    娱乐新闻的最新blog:研究生自杀,谁之过?! My ComLuv Profile

  11. 三七八蛋 说:

    大师啊大师,操作系统,我考试只有及格。。
    三七八蛋的最新blog:一封闲得蛋疼的举报信 My ComLuv Profile

    第三眼 回复:

    @三七八蛋, 我算哪门子大师啊,我这都是旁门左道

  12. 开心凡人 说:

    呵呵貌似我以前用过,现在忘了
    开心凡人的最新blog:路透社今年最佳摄影作品 My ComLuv Profile

preload preload preload