【问题标题】:Killing a defunct process on UNIX system [closed]在 UNIX 系统上杀死一个已失效的进程[关闭]
【发布时间】:2010-09-26 06:48:10
【问题描述】:

我的系统上有一个已失效的进程:

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

【问题讨论】:

  • 父进程 id 为 1 的事实意味着无论启动它都是死的。我不确定为什么“init”还没有收获。
  • 那是僵尸!别担心,他没有害处,也不吃任何东西。
  • 在 solaris 上有 preap 来获取僵尸进程,不幸的是不是 init 的子进程。
  • Loki - 如果僵尸进程大量出现,它们会产生问题。如果非常关注僵尸进程的根本原因。

标签: unix process kill zombie-process


【解决方案1】:

如果杀死父母不能解决问题,你可能无法做到。无论出于何种原因,系统都没有收集该僵尸进程。

FWIW,我在我曾经管理的 SCO Openserver boxen 上看到了很多。大量的多用户使用和低系统资源,但它似乎并没有伤害任何东西。只是惹恼了我。 :)

【讨论】:

    【解决方案2】:

    您是否检查过可能需要先终止的子进程?有时,果酱已经结束了…… 试试ps -ef --forest

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

    【讨论】:

      【解决方案3】:

      你已经杀死了进程,但是一个死进程不会从进程表中消失,直到它的父进程执行一个名为“reaping”的任务(本质上是调用wait(3)让那个进程读取它的退出状态)。未被回收的死进程称为“zombie processes”。

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

      【讨论】:

      • Init 肯定会收割死去的孩子。想想这不正确的含义:每个子进程都必须在其父进程之前终止。
      • 重新启动 init 可能会有所帮助 - 在 Linux 上,telinit 你应该能够做到这一点。
      • 最后一句话是完全错误的。收割孩子几乎是 init 所做的唯一事情!
      • @WilliamPursell,谢谢,我已经编辑了最后一句话。 Init 确实会收获子进程,但显然有时它无法摆脱僵尸进程。
      【解决方案4】:

      如果 kill -9 未能杀死进程,原因几乎总是驱动程序或操作系统错误。

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

      杀死已失效进程的子进程不太可能有帮助,除非它们与您所看到的特定错误有关。

      【讨论】:

      • "如果 kill -9 未能杀死进程,原因几乎总是驱动程序或操作系统错误。"这是真的,除了一个已失效的进程。 kill -9 不会对已失效的进程执行任何操作,只会向内核发送有关该进程的 SIGKILL 信号,但内核不会根据此信号管理进程表。
      • @benc:我同意,僵尸进程已经死了,不会再响应 SIGKILL 死了。但是,我的答案的其余部分是:似乎存在一个错误,导致该进程在调用 wait() 时无法被 init 收割。
      【解决方案5】:

      该过程可能会挂起,例如忽略 SIGPIPE 之类的信号,请与 strace -p &lt;pid&gt; 检查这里发生了什么。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-05
        • 1970-01-01
        • 1970-01-01
        • 2014-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多