首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在UNIX系统上终止已死的进程

在UNIX系统上终止已死的进程
EN

Stack Overflow用户
提问于 2008-12-10 16:42:52
回答 5查看 87.3K关注 0票数 51

我的系统上有一个废弃的进程:

代码语言:javascript
复制
abc      22093 19508  0 23:29 pts/4    00:00:00 grep ProcA
abc      31756     1  0 Dec08 ?        00:00:00 [ProcA_my_collect] <defunct>

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

代码语言:javascript
复制
kill -9 31756
sudo kill -9 31756
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2008-12-10 18:07:28

您已经终止了该进程,但是直到其父进程执行了一个称为"reaping“的任务(实质上是调用wait(3)让该进程读取其退出状态),死进程才会从进程表中消失。尚未收获的已死进程称为“zombie processes”。

您看到的31756的父进程id是进程id 1,它始终属于init。该进程应该定期获取其僵尸进程,但如果不能,它们将在进程表中保持僵尸状态,直到您重新启动为止。

票数 41
EN

Stack Overflow用户

发布于 2008-12-10 17:33:34

您是否检查了可能需要先终止的子进程?有时候最重要的是……试试ps -ef --forest

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

票数 23
EN

Stack Overflow用户

发布于 2009-03-10 12:07:31

如果kill -9无法杀死一个进程,那么原因几乎总是驱动程序或操作系统错误。

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

杀死失效进程的子进程不太可能有帮助,除非它们以某种方式与您看到的特定bug相关。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/356722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档