Ein Zombie-Prozess , der keine Ressourcen (RAM und CPU) verbrauchen sollte , belastet einen ganzen Kern meiner 8-Kern-64-Bit-Ubuntu 11.10-Desktop-Installation.
Dies ist die Ausgabe von 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>
... und hier ein Auszug aus 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
So entstand der Zombie-Prozess:
- Ich habe eine Java-JAR namens minecraft.jar geöffnet . Dieser Launcher lädt eine andere JAR-Datei nach ~ / .minecraft / bin / minecraft.jar herunter
- Diese JAR wurde ausgeführt, als ich meinen Computer mit gesperrt habe
xscreensaver
. - Dann gab ich mein Passwort ein, um den Computer zu entsperren, und ich sah, dass das Minecraft-Fenster eingefroren war.
- Ich habe versucht, es zu töten (PID 10317) mit
gnome-system-monitor
. Es wurde ein Zombie. kill -9 10317
war unwirksam.xkill
schloss nur das Fenster mit dem Titel "Minecraft"; Der zugrunde liegendejava
Prozess wurde nicht geschlossen .
Relevante Information:
- Der Grafiktreiber ist FGLRX und hat in Unity von Ubuntu 11.04 und Ubuntu 11.10 berüchtigte Probleme verursacht , einschließlich manchmal hoher CPU-Auslastung von
Xorg
undcompiz
.
Ich möchte wissen:
- Wie kann dieser Prozess
java
abgebrochen werden, ohne dass ein Neustart erforderlich ist ? - Warum passiert dieses Problem?
- Wie kann ich verhindern, dass dieses Problem erneut auftritt?
Antworten:
Der Prozess wurde bereits repariert
init
, daher sollte er geerntet werden (andernfalls würde die Lösung wahrscheinlich darin bestehen, den übergeordneten Prozess zu töten). Es scheint festzusteckenexit
, basierend auf demWCHAN
Feld.Es kann tatsächlich etwas tun (wie das Erstellen eines Core-Dumps), das beendet wird und von selbst verschwindet. Leider dreht es sich wahrscheinlich im Kernel wegen eines defekten Treibers, und letztendlich besteht Ihre einzige Option darin, einen Neustart durchzuführen.
quelle
Hast du es versucht
sudo kill -SIGCHLD 1
? Wenn dies nicht funktioniert, müssen Sie das System neu starten.Mehr dazu: /programming/6335730/zombie-process-cant-be-killed und /server/89759/init-never-reaping-zombie-defunct-processes
quelle
Zombie-Prozesse sind gestorben, wurden jedoch noch nicht bereinigt (erntet ist der richtige Begriff) und
kill
funktionieren daher nicht wie ein normaler Prozess. Der Prozess befindet sich noch in der Prozesstabelle, aber wenn es sich um einen Zombie handelt, wurden die Ressourcen freigegeben.Sie können versuchen, ein
SIGCHLD
Signal an das übergeordnete Element des Prozesses zu senden. Andernfalls hätte init es aufnehmen und es möglicherweise ernten müssen. Wenn Sie den Vorgang beschleunigen möchten, können Sie einfach einen Neustart durchführen.quelle
Dies ist ein Kernel-Fehler. Verwenden Sie ecryptfs, um Ihr Home-Verzeichnis zu verschlüsseln? Es gibt einen Fehler, der darüber auf launchpad.net abgelegt wurde.
quelle