? Ein Zombie-Prozess ist ein Computer -Prozess auf einem Unix - basiertes Betriebssystem, das die Ausführung beendet hat , aber immer noch eine Prozess-ID -Nummer in das Betriebssystem die Prozess Tisch. Es sind die Überreste eines größeren Prozesses oder Programm, das zu sammeln und führen alle Befehle für die Ausfahrt , wenn der Prozess beendet ist fehlgeschlagen. Diese Prozesse nehmen nicht alle CPU-Zyklen oder Speicherplatz though. Ursache
Fehlerhafte Programmcode führt oft zu Prozessen nicht richtig beendet , was in Zombie-Prozesse , die sich in laufenden Programme. Der Programmierer hat keine übergeordnete Prozess programmiert, benutzen Sie die " wait" System anrufen , damit ein Kind-Prozess unabhängig voneinander ausgeführt werden , während die Eltern ausgesetzt. Dies bedeutet, dass der untergeordnete Prozess nicht wieder einen Exit-Status -Nachricht an die Muttergesellschaft , wenn es , so endet die Eltern nie die Mitteilung von der Kündigung und der Kind-Prozess wird ein Zombie-Prozess .
Überlegungen
hetzen Sie nicht zu Zombie-Prozesse , sobald Sie sie finden kündigen. Manchmal übergeordneten Prozesse verlassen Zombie-Prozesse absichtlich so dass der gleiche Prozess -ID-Nummer ist nicht auf zwei getrennte Prozesse während des Programms Lebensdauer gegeben . Wenn Sie nur ein paar Zombie-Prozesse in einer Zeit , die nicht persistent sind zu sehen , können die Eltern schließlich Prozesse beenden sie . Allerdings kann , wenn Ihr System zu verlangsamen beginnt mit einer großen Menge von Prozessen läuft, endet einige Zombie-Prozess die Performance verbessern.
Lokalisierung Zombies
Mit einem Unix-Befehl Werkzeug, um die "ps" Befehl ausführen - kurz für Prozess-Status - listet alle laufenden Prozesse auf einem System . Jeder Prozess als " z " unter der Spalte Stat ist ein Zombie-Prozess . Jeder dieser Prozesse, die während der Eltern-Prozess oder das Programm noch läuft existieren ist bezeichnend für fehlerhafte Code , während Zombie-Prozesse laufen ohne einen Elternteil in der Regel stellen Programm einen Fehler im Betriebssystem selbst .
Töten Zombies
Zombie Prozesse behalten Prozess -ID-Nummern in den Prozess Eintrag Tisch, so dass zu viele von ihnen zu machen führen, dass Ihr System zu laufen aus diesen Zahlen . Sie können jedoch gewaltsam beenden Zombie-Prozesse zu befreien , ihre Prozess-ID in der Tabelle . Beenden sie mit dem " kill- s SIGCHLD "-Befehl , wobei " ppid " stellt die Zombie Eltern Prozess-ID . Alternativ können Sie auch gewaltsam töten übergeordnete Prozesse , alle Kinder und Zombie Prozesse, die sie erstellt haben, sowie zu kündigen.