如果 kill -9 不起作用怎么办?

Bad*_*ate 8 kill

我有一个讨厌的进程(在这种情况下,一个应该在 iPhone Simulator 中运行的搁浅进程(现在已经退出很久了)。

97442 ??         0:00.00 (MyProcess)
Run Code Online (Sandbox Code Playgroud)

我已经尝试了我能想到的一切,包括

sudo kill -9 97442
sudo kill -HUP 97442
Run Code Online (Sandbox Code Playgroud)

然而,就像乌鸦一样……这个过程仍然存在。

在这种情况下,这意味着为了继续工作,我必须重新启动我的机器。

sar*_*old 13

当一个进程像这个进程一样保留在进程表中时,你需要杀死它的进程。首先,找到父进程PID:

ps -eo 'pid,ppid,comm' | grep 97442
Run Code Online (Sandbox Code Playgroud)

然后kill <pid>不管ppid结果如何都跑。(先给它一个干净地死去的机会。)

传统的UNIX设计使过程信息周围的家长收获和清理,以防父进程要运行getrusage(2),找出其子女的资源使用情况,或者wait(2)为他们的退出状态,等等。

当父母没有收获他们的孩子时,孩子们仍然是僵尸——直到父进程被杀死,此时内核会将孩子们重新设为init(8). init(8) 收获新重新养育的孩子。