UNIX系统上杀死一个被禁过程[关闭]
-
21-08-2019 - |
题
我有一个被禁过程我的系统上:
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>
如何杀死上述过程中,无须对机器的重启?我试图与
kill -9 31756
sudo kill -9 31756
解决方案
您已经杀死的过程中,但直到它的父进程执行一个被称为“收获”任务死亡的进程不会从进程表中消失(实质上调用wait(3)
该进程读取它的退出状态)。没有被收获被称为死过程“僵尸处理。”
你看到31756父进程ID是进程ID 1,它总是属于init
。这一过程应定期收割的僵尸进程,但如果不能,他们将继续僵尸进程表,直到你重新启动。
其他提示
你检查孩子的过程,可能需要先杀死?有时卡纸涨是跌的行...
尝试ps -ef --forest
,看看有什么可能低于它(如果有的话),然后杀了你已经知道
这是第一次,那么一个如果杀-9未能杀死一个进程的原因几乎总是一个驱动程序或操作系统错误。
init进程已通过的过程中,但它不能收割。也就是说:当初始化调用wait(2)不返回过程。一个初始化的主要目的之一是收获死亡的孤儿,所以问题不在于它是收获前,其父去世。想想:?否则,谁注销后nohup'd过程的结果收获
查杀死进程的孩子是不太可能有帮助,除非它们以某种方式与您所看到的特定的错误。
您很可能不会是能够查杀,如果家长不解决它。无论什么原因,系统不收集该僵尸进程。
FWIW,我已经看到了相当多的,我用来管理在SCO OpenServer Boxen有。重型多用户的使用和低系统资源,但它似乎并没有伤害任何东西。只是让我生气。 :)
的方法,可能挂在例如忽略信号像SIGPIPE,检查与strace -p <pid>
这里发生了什么。
不隶属于 StackOverflow