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

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

我遇到了一个讨厌的进程(在这种情况下,一个本来应该在 iPhone 模拟器中运行的搁浅进程(现在早已退出)。

97442 ??         0:00.00 (MyProcess)

我已经尝试了所有我能想到的方法,包括

sudo kill -9 97442
sudo kill -HUP 97442

然而,就像乌鸦一样......过程仍然存在。

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

答案1

当一个进程仍然留在进程表中,就像这个进程一样,那么你需要杀死它的父母进程。首先,找到父进程PID:

ps -eo 'pid,ppid,comm' | grep 97442

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

传统的 Unix 设计将进程信息保留在父母收集和清理,以防父进程想要​​运行getrusage(2)以找出其子进程的资源使用情况,或者wait(2)它们的退出状态等。

当父母不收割他们的孩子时,孩子将保持僵尸状态 - 直到父进程被杀死,此时内核将重新将孩子指定为父级init(8)init(8) 将要收获刚刚重新成为父母的孩子们。

相关内容