de.phhsnews.com


de.phhsnews.com / Was ist ein "Zombie-Prozess" unter Linux?

Was ist ein "Zombie-Prozess" unter Linux?


Wenn Sie ein Linux-Benutzer sind, haben Sie möglicherweise gesehen, wie sich Zombie-Prozesse um Ihre Prozessliste herum gebildet haben. Du kannst einen Zombie-Prozess nicht töten, weil er bereits tot ist - wie ein echter Zombie.

Zombies sind im Grunde die Reste von toten Prozessen, die nicht richtig aufgeräumt wurden. Ein Programm, das Zombie-Prozesse erzeugt, ist nicht richtig programmiert - Programme sollen keine Zombie-Prozesse zulassen.

Bildquelle: Daniel Hollister auf Flickr (Remixed)

Was ist ein Zombie-Prozess?

Um zu verstehen Was ein Zombie-Prozess ist und was Zombie-Prozesse verursacht, müssen Sie ein wenig darüber verstehen, wie Prozesse unter Linux funktionieren.

Wenn ein Prozess unter Linux abstürzt, wird nicht sofort alles aus dem Speicher entfernt - sein Prozess Deskriptor bleibt im Speicher (der Prozessdeskriptor benötigt nur wenig Speicher). Der Prozessstatus wird EXIT_ZOMBIE und der Elternprozess wird benachrichtigt, dass sein untergeordneter Prozess mit dem SIGCHLD-Signal abgestorben ist. Der Elternprozess soll dann den Systemaufruf wait () ausführen, um den Exit-Status des toten Prozesses und andere Informationen zu lesen. Dadurch kann der übergeordnete Prozess Informationen aus dem toten Prozess abrufen. Nachdem wait () aufgerufen wurde, wird der Zombie-Prozess vollständig aus dem Speicher entfernt.

Dies passiert normalerweise sehr schnell, so dass Sie keine Zombie-Prozesse auf Ihrem System sehen werden. Wenn ein Elternprozess jedoch nicht richtig programmiert ist und nie wait () aufruft, verbleiben seine Zombie-Kinder im Speicher, bis sie aufgeräumt sind.

Dienstprogramme wie GNOME System Monitor, bis Befehl und der Befehl ps zeigt Zombie-Prozesse an.

Gefahren von Zombie-Prozessen

Zombie-Prozesse verbrauchen keine Systemressourcen. (Tatsächlich verwendet jeder eine sehr kleine Menge an Systemspeicher, um seinen Prozessdeskriptor zu speichern.) Jedoch behält jeder Zombieprozess seine Prozess-ID (PID) bei. Linux-Systeme haben eine endliche Anzahl von Prozess-IDs - 32767 standardmäßig auf 32-Bit-Systemen. Wenn sich Zombies sehr schnell ansammeln - zum Beispiel, wenn falsch programmierte Server-Software Zombie-Prozesse unter Last erzeugt - wird der gesamte Pool verfügbarer PIDs schließlich Zombie-Prozessen zugewiesen, was verhindert, dass andere Prozesse gestartet werden.

ein paar Zombie-Prozesse sind kein Problem - obwohl sie einen Fehler mit ihrem Elternprozess auf Ihrem System anzeigen.

Zombie-Prozesse loswerden

Sie können keine Zombie-Prozesse beenden, da Sie normale Prozesse mit dem System beenden können SIGKILL Signal - Zombie-Prozesse sind schon tot. Denken Sie daran, dass Sie keine Zombie-Prozesse loswerden müssen, es sei denn, Sie haben eine große Menge auf Ihrem System - ein paar Zombies sind harmlos. Es gibt jedoch einige Möglichkeiten, Zombie-Prozesse loszuwerden.

Eine Möglichkeit besteht darin, das SIGCHLD-Signal an den übergeordneten Prozess zu senden. Dieses Signal weist den übergeordneten Prozess an, den Systemaufruf wait () auszuführen und seine Zombie-Kinder zu bereinigen. Senden Sie das Signal mit dem Befehl kill und ersetzen Sie pid im folgenden Befehl durch die PID des übergeordneten Prozesses:

kill -s SIGCHLD pid

Wenn der übergeordnete Prozess isn ist 't programmiert richtig und ignoriert SIGCHLD-Signale, wird dies nicht helfen. Sie müssen den Elternprozess der Zombies töten oder schließen. Wenn der Prozess, der die Zombies erstellt hat, endet, erbt init die Zombie-Prozesse und wird zu ihrem neuen Elternteil. (init ist der erste Prozess, der beim Booten unter Linux gestartet wird und PID 1 zugewiesen wird.) init führt regelmäßig den Systemaufruf wait () aus, um seine Zombie-Kinder zu bereinigen, damit init die Zombies kurz arbeiten. Du kannst den Elternprozess nach dem Schließen neu starten.

Wenn ein Elternprozess weiterhin Zombies erstellt, sollte er repariert werden, damit er seine Zombie-Kinder mit wait () aufruft. Reichen Sie einen Fehlerbericht ein, wenn ein Programm auf Ihrem System weiterhin Zombies erstellt.


Die besten Funktionen von Vivaldi, ein neuer anpassbarer Webbrowser für Power User

Die besten Funktionen von Vivaldi, ein neuer anpassbarer Webbrowser für Power User

Vivaldi ist ein neuer Desktop-Webbrowser für Windows, Mac und Linux, der in erster Linie für Benutzer entwickelt wurde, die ihre eigenen anpassen möchten Browser bis zum n-ten Grad. Nach über einem Jahr in der Entwicklung ist die Version 1.0 endlich auf den Markt gekommen - aber ist Vivaldi besser als die Browser, die Sie bereits verwenden, und sollten Sie dazu wechseln?

(how-to)

Der Unterschied zwischen WEP-, WPA- und WPA2-WLAN-Passwörtern

Der Unterschied zwischen WEP-, WPA- und WPA2-WLAN-Passwörtern

Auch wenn Sie wissen, dass Sie Ihr Wi-Fi-Netzwerk sichern müssen (und dies bereits getan haben), finden Sie wahrscheinlich alle Das Sicherheitsprotokoll akronymiert ein wenig rätselhaft. Lesen Sie weiter, wenn wir die Unterschiede zwischen Protokollen wie WEP, WPA und WPA2 hervorheben und warum es wichtig ist, welches Akronym Sie in Ihr WLAN-Netzwerk einspielen.

(how-to)