当前位置:  开发笔记 > 编程语言 > 正文

在UNIX系统上杀死已失效的进程

如何解决《在UNIX系统上杀死已失效的进程》经验,为你挑选了3个好方法。

我的系统上有一个已解散的进程:

abc      22093 19508  0 23:29 pts/4    00:00:00 grep ProcA
abc      31756     1  0 Dec08 ?        00:00:00 [ProcA_my_collect] 

如何在不重启机器的情况下终止上述过程?我试过了

kill -9 31756
sudo kill -9 31756

Bill Karwin.. 41

您已经终止了该进程,但是一个死进程不会从进程表中消失,直到其父进程执行一个名为"reaping"的任务(实质上是要求wait(3)该进程读取其退出状态).尚未获得的死亡进程称为" 僵尸进程".

您在31756中看到的父进程ID是进程ID 1,它始终属于init.该过程应定期收集其僵尸进程,但如果不能,则它们将在进程表中保留僵尸,直到您重新启动.



1> Bill Karwin..:

您已经终止了该进程,但是一个死进程不会从进程表中消失,直到其父进程执行一个名为"reaping"的任务(实质上是要求wait(3)该进程读取其退出状态).尚未获得的死亡进程称为" 僵尸进程".

您在31756中看到的父进程ID是进程ID 1,它始终属于init.该过程应定期收集其僵尸进程,但如果不能,则它们将在进程表中保留僵尸,直到您重新启动.


最后一句完全错了.收获孩子几乎是初夏所做的唯一事情!
Init肯定会收获死去的孩子.想想那不正确的含义:每个子进程都必须在其父进程之前终止.

2> curtisk..:

您是否检查过可能需要先杀死的子进程?有时堵塞就行了......试试吧ps -ef --forest

看看它下面的东西(如果有的话)然后先杀掉那个,然后你已经知道的那个



3> janm..:

如果kill -9无法终止进程,则原因几乎总是驱动程序或操作系统错误.

init进程采用了这个过程,但它无法获得它.也就是说:当init调用wait(2)时,不返回该进程.init的主要目的之一是收获死亡的孤儿,所以问题不在于其父母在收获之前就死了.想一想:否则,谁会在注销后获得nohup'd进程的结果?

除非他们以某种方式与您所看到的特定错误相关,否则杀死已解散过程的孩子不太可能有所帮助.

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有