如何在 Mac 上杀死僵尸进程

如何在 Mac 上杀死僵尸进程

如何使用终端在 Mac 上杀死僵尸进程或找到其父进程?

答案1

钢锯说道:

悲哀的是看来,杀死僵尸就是弑父,如果父级是 /sbin/launchd,则只能通过重新启动才能将其终止。

杀死它将是一个非常糟糕的想法launchd,但你可以告诉它 HUP。

尝试sudo kill -s HUP 1

这将导致launchd重新初始化而不重新启动。这在过去对我来说很有效(例如删除僵尸条目)。

答案2

悲哀的是看来,杀死僵尸就是弑父,如果父级是 /sbin/launchd,则只能通过重新启动才能将其终止。

我在使用 Xcode 时遇到了僵尸程序,然后停止了模拟器,它将僵尸程序交给我自己的 /sbin/launchd,它没有消失当我退出时。

ps -xo pid,ppid,stat,命令将显示您的流程,其父ID在第二列中。

答案3

僵尸进程已经死亡,无法被杀死。当父进程死亡时,它们应该被自动从进程表中删除。

它们不会减慢您的机器速度,您可以将它们留在那里(它们只是进程表中的条目)。

进程数是有上限的(你可以用 检查sysctl kern.maxproc),而僵尸进程会减少该上限(因为它们会被计算在内)。

如果达到此限制,您将无法创建新的进程,并且将被迫重新启动。

答案4

您可以使用附加到父进程lldb -p <parent pid>,然后调用expr (int)::waitpid(<child pid>, NULL, 0)

这将在父级中获取子僵尸进程的退出状态,从而从进程表中删除僵尸进程。

相关内容