僵尸进程使用 100% CPU

Del*_*tik 14 linux cpu java process top

不应该使用任何资源(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>
Run Code Online (Sandbox Code Playgroud)

...这里是摘录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
Run Code Online (Sandbox Code Playgroud)

这就是僵尸进程的存在方式:

  1. 我打开了一个名为minecraft.jar的 Java JAR 。此启动器将另一个 JAR 文件下载到 ~/.minecraft/bin/minecraft.jar
  2. 当我用xscreensaver.
  3. 然后,我输入密码解锁电脑,我看到 Minecraft 窗口被冻结了。
  4. 我尝试用gnome-system-monitor. 它变成了僵尸。
  5. kill -9 10317 无效。
  6. xkill只关闭了标题为“我的世界”的窗口;它没有关闭底层java进程。

相关信息:

我想知道:

  1. java如果有的话,有什么方法可以在不重新启动的情况下破坏这个进程?
  2. 为什么会出现这个问题?
  3. 我能做些什么来防止这个问题再次发生?

Dav*_*rtz 8

该进程已经被重新分配给init,所以它应该被收割(否则,解决方案可能是杀死它的父级)。exit根据该WCHAN字段,它似乎被困在 中。

它实际上可能正在做一些事情(比如创建一个核心转储),它将完成并且它会自行消失。不幸的是,由于驱动程序损坏,它可能会在内核中旋转,最终,您唯一的选择是重新启动。


bwD*_*aco 5

你试过sudo kill -SIGCHLD 1吗?如果这不起作用,则需要重新启动系统。

更多相关信息:https : //stackoverflow.com/questions/6335730/zombie-process-cant-be-killedhttps://serverfault.com/questions/89759/init-never-reaping-zombie-defunct-processes