【问题标题】:java <defunct> still present even after killing all java processesjava <defunct> 即使在杀死所有 java 进程后仍然存在
【发布时间】:2013-12-06 09:12:34
【问题描述】:

执行下面的命令来杀死linux系统上的java进程。

ps -ef | grep java | grep -v grep | awk '{print $2}'| xargs kill -9

之后,当我检查正在运行的 java 进程时,我发现“[java]”进程仍在运行。

如何杀死这些已失效的进程?

【问题讨论】:

  • 解决方法:运行命令ps -ef | grep defunct获取PPID。然后杀死 PPID,这将反过来杀死僵尸进程的 PID
  • 除非万不得已,否则不要使用kill -9。一个简单的kill 就足够了。

标签: java linux bash awk kill


【解决方案1】:

僵尸(已失效)进程已死亡。 unix 上的所有进程在它们死后都会挂起,直到它们的父进程请求它们的返回状态。大多数情况下,这会立即发生,因此您永远不会看到该进程是僵尸进程。但是如果父进程挂起或停止,它就无法释放其死掉的子进程,因此它们会像僵尸一样徘徊。

【讨论】:

    【解决方案2】:

    即使使用 kill -9 命令杀死了已失效的进程,会话句柄仍将保留在终端窗口中。如果我们注销并重新登录,这将清除所有会话句柄

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-27
      • 1970-01-01
      • 2010-11-09
      • 1970-01-01
      • 1970-01-01
      • 2012-04-20
      • 1970-01-01
      • 2011-09-15
      相关资源
      最近更新 更多