使用100%CPU的僵尸进程


13

一个僵尸进程(不应使用任何资源(RAM和CPU))正在占用我的8核64位Ubuntu 11.10桌面安装上的整个核

这是输出ps -el|grep Z

F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 Z  1000 10317     1 99  80   0 -     0 exit   ?        19:27:15 java <defunct>

...这是摘录自top

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                                
10317 deltik    20   0     0    0    0 Z  100  0.0   1170:17 java <defunct>
 1424 root      20   0  612m 193m 158m S   14  2.4 287:17.11 Xorg
12580 deltik    20   0  710m 135m  46m S    5  1.7  27:31.07 compiz

僵尸进程就是这样形成的:

  1. 我打开了一个名为minecraft.jar的Java JAR 。该启动器将另一个JAR文件下载到〜/ .minecraft / bin / minecraft.jar
  2. 当我用锁定计算机时,那个JAR正在执行xscreensaver
  3. 然后,我输入密码以解锁计算机,然后看到Minecraft窗口被冻结。
  4. 我尝试使用杀死它(PID 10317)gnome-system-monitor。它变成了僵尸。
  5. kill -9 10317 是无效的。
  6. xkill只关闭了标题为“ Minecraft”的窗口;它并没有关闭基础java流程。

相关信息:

我想知道:

  1. 有什么方法可以销毁此过程而java无需重新启动(如果有)?
  2. 为什么会发生此问题?
  3. 我该怎么做才能防止此问题再次发生?

1
恐怕我个人无法帮您,但我赞扬您出色地解释了到目前为止发生的事情和您被尝试的事情!
nhinkle '02

7
“嘿,这个应用程序正在消耗大量的CPU时间。顺便说一下,它是用Java编写的。不知道两者是否相关???”
ta.speot。是2012年

它很可能在锁上旋转。
Daniel R Hicks '02


@RedGrittyBrick在我玩游戏时也会发生这种情况,运行Minecraft jar的僵尸Java进程和游戏中的僵尸是不同的东西。
2014年

Answers:


8

该进程已被重新绑定到init,因此应该获得该权限(否则,解决方案可能是杀死其父级)。exit根据该WCHAN字段,它似乎卡在中。

它实际上可能正在完成某项操作(例如创建核心转储),并且该操作将自行消失。不幸的是,由于驱动程序损坏,它很可能在内核中旋转,最终,您唯一的选择是重新启动。


自问这个问题已经有一段时间了,但是我无法再次再现我的问题,尤其是在将FGLRX更新到最新版本之后。我选择这是最佳答案,因为它指出了损坏的驱动程序,并且功能最全面。
Deltik 2012年


4

僵尸进程已死亡,但尚未清除(收获是正确的用语),因此kill无法像正常进程那样对它们起作用。该进程仍在进程表中,但是当它是僵尸时,资源将被取消分配。

您可以尝试向SIGCHLD进程父进程发送信号,否则init应该已经选择了它并最终将获得它。如果您想加快此过程,只需重启即可。


1

这是一个内核错误。您是否正在使用ecryptfs加密您的主目录?在launchpad.net上有关于此的错误存档。


不,我手动加密主目录中的文件。
Deltik
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.