Zombie-Prozess. Nicht jeder hat von diesem interessanten, aber beängstigenden Wort gehört, das sich auf das Linux-Betriebssystem bezieht. Auf einem PC stellen Zombie-Prozesse möglicherweise keine Bedrohung für einen normalen Benutzer dar. Bei Linux-Servern müssen diese Prozesse jedoch identifiziert und gestoppt werden.

Solche Prozesse können Probleme mit der Prozesstabelle Ihres Systems verursachen und wiederum die ordnungsgemäße Funktion Ihrer Maschine beeinträchtigen. Daher werden wir in diesem Artikel ausführlich auf Zombie-Prozesse sowie eine umfassende Anleitung zum Auffinden und Beenden von Zombie-Prozessen auf einem Linux-Computer eingehen.

Was sind Zombie-Prozesse?

Vor allem aber ist es wichtig, dass Sie wissen, was Zombie-Prozesse wirklich sind. Dies sind nichts anderes als tote und nicht mehr funktionierende Prozesse, die Speicherplatz in der Systemprozesstabelle belegen. EIN Prozesssteuerungsblock oder PCB ist eine Datenstruktur, in der Details zu einzelnen Prozessen gespeichert sind, die auf Ihrem System ausgeführt werden.

instagram viewer

Die Prozesstabelle besteht aus der Prozess-ID, einem Link zur Leiterplatte und anderen nützlichen Informationen zum Prozess. Zombie-Prozesse haben ihre eigenen Prozess-IDs und Speicherverwaltungsinformationen. Da für das Linux-Betriebssystem nur eine begrenzte Anzahl von Prozess-IDs verfügbar ist, können andere Prozesse die PIDs erst verwenden, wenn der Zombie-Prozess gestoppt ist.

Obwohl ein oder zwei Zombie-Prozesse keine Störungen oder Leistungsprobleme auf Ihrem Computer verursachen, a Eine große Anzahl solcher Prozesse kann den Workflow Ihres Systems beeinträchtigen, indem die Prozesstabelle und die überflutet werden Ressourcen.

Was verursacht Zombie-Prozesse unter Linux?

Um die zugrunde liegende Ursache eines Zombie-Prozesses im Detail zu verstehen, müssen Sie lernen, wie Prozesse unter Linux gestartet und gestoppt werden. Das Linux-Betriebssystem überwacht alle laufenden Prozesse und Dämonen auf einem Computer. Das Prozesstabelle ist eine Liste von Strukturen, die alle Prozesse enthält, die derzeit auf Ihrem Computer ausgeführt werden.

Jeder Prozesseintrag in der Prozesstabelle besteht aus einem Link zum Prozesssteuerungsblock dieses spezifischen Prozesses. Die Leiterplatte speichert die Details, die diesem bestimmten Prozess zugeordnet sind. Diese Details umfassen:

  1. Prozessstatus: Der aktuelle Status des Prozesses
  2. Prozessnummer: Eine eindeutige Nummer zur Identifizierung des Prozesses
  3. Programm zähler: Enthält Informationen zur nächsten Anweisung
  4. Register: Liste aller vom Prozess verwendeten CPU-Register
  5. Dateiliste öffnen: Vom Prozess verwendete Dateien
  6. Informationen zur CPU-Planung: Enthält Informationen zur CPU-Zeit und zu den dem Prozess zugewiesenen Ressourcen
  7. Speicherverwaltungsinformationen: Enthält Details zur Speichermenge, die vom Prozess verwendet wird
  8. E / A-Informationen: Liste der vom Prozess verwendeten Eingabe- oder Ausgabegeräte

Linux verwendet die folgenden Prozesszustände, um alle seine Prozesse zu beschreiben.

  • R.: Prozess wird ausgeführt
  • S.: Schlafprozess
  • D.: Ununterbrochener Schlafprozess
  • T.: Prozess beendet
  • Z.: Zombie-Prozess

Immer wenn ein Prozess die zugewiesene Aufgabe abschließt, wird sein Prozessstatus auf festgelegt Zombie oder Z.. Jeder Prozess verfügt über einen übergeordneten Prozess, der eine Familie von Funktionen mit dem Namen aufruft warten() das wartet auf die Zustandsänderung eines Prozesses. Zum Beispiel, wenn sich der Prozessstatus von ändert Laufen zu Zombie, das warten() Methode wird ausgelöst.

Das warten() Die Methode löscht normalerweise den Prozesssteuerungsblock, der sich auf diesen Zombie-Prozess bezieht, und entfernt dann den Eintrag dieses Prozesses aus der Prozesstabelle.

Aber manchmal ruft der übergeordnete Prozess aufgrund der schlechten Entwicklung eines Programms das nicht auf warten() Funktion. Infolgedessen löscht das System die Leiterplatte des Zombie-Prozesses nicht. Der Prozesstabelleneintrag für diesen bestimmten Prozess bleibt ebenfalls erhalten.

Dies gewährt dem Zombie-Prozess eine unendliche Lebensdauer. Da das System den Prozess nicht beenden kann, wird der Prozesseintrag niemals gelöscht und die PID wird niemals freigegeben.

Erfahren Sie mehr: Möglichkeiten, nicht reagierende Programme unter Linux zu beenden

Wie finde ich Zombie-Prozesse?

Der erste Schritt zum Entfernen von Zombie-Prozessen auf Ihrem System besteht darin, zu analysieren, welcher Prozess die hat Zombie Prozessstatus. Während Sie diese Prozesse nicht direkt beenden können, da das System sie bereits aus dem Speicher entfernt hat, können Sie den ihnen zugeordneten übergeordneten Prozess beenden.

Zuerst müssen Sie überprüfen, ob die Prozesstabelle Ihres Systems einen Zombie-Prozess enthält. Sie können dies einfach mit dem tun oben Befehl. Öffnen Sie einfach Ihr Terminal und geben Sie Folgendes ein:

oben

Sie sehen eine ähnliche Ausgabe wie diese. Beachten Sie die Anzahl der Zombie-Prozesse oben im Terminalfenster. Wenn die Ausgabe Null ist, brauchen Sie sich keine Sorgen zu machen.

Sie können Informationen zu diesen Zombie-Prozessen durch Piping auflisten der Befehl ps mit egrep. Egrep ist eine Erweiterung des Befehls grep unter Linux, die alle Muster als erweiterte Regex-Zeichenfolge behandelt.

Verbunden: Der Leitfaden für Anfänger zu regulären Ausdrücken mit Python

Geben Sie den folgenden Befehl ein, um alle Zombie-Prozesse aufzulisten:

ps aux | egrep "Z | defunct"

Der oben genannte Befehl sucht nach Zeilen, die entweder enthalten Z. oder verstorben in der vom Befehl ps generierten Ausgabe. Die Ausgabe besteht aus einer Liste der Zombie-Prozesse, die auf Ihrem System ausgeführt werden.

Töten von Zombie-Prozessen mit dem Befehl kill

Jetzt, da Sie wissen, welche Zombie-Prozesse derzeit Ihre Systemressourcen verschlingen, ist es Zeit, diese Prozesse zu beenden.

Während der einfachste Weg, Zombie-Prozesse zu beenden, darin besteht, Ihren Computer neu zu starten, ist dies manchmal keine praktikable Option, insbesondere wenn Sie einen Server verwalten.

Um Zombie-Prozesse zu beenden, ohne Ihren Server herunterzufahren, notieren Sie sich die Prozess-ID eines Zombie-Prozesses. Aus dem vorherigen Abschnitt können wir sehen, dass die PID des Zombie-Prozesses 18614 war. Verwenden Sie dann diese PID, um die ID des übergeordneten Prozesses zu ermitteln.

ps -o ppid = -p 18614

Ausgabe:

18613

Überprüfen Sie mithilfe von, ob die übergeordnete Prozess-ID vorhanden ist ps Befehl.

ps -e | grep 18613

Nachdem wir die Existenz des übergeordneten Prozesses bestätigt haben, ist es Zeit, ihn zu beenden. Übergeben Sie die -SIGKILL Flagge mit dem töten Befehl wie folgt:

sudo kill -SIGKILL 18613

Sobald Sie den übergeordneten Prozess beendet haben, löscht das System den Zombie-Prozess und entfernt ihn automatisch aus der Prozesstabelle.

Effizientes Verwalten von Prozessen unter Linux

Jeder Systemadministrator muss Überwachungsprozesse priorisieren, die auf einem Linux-Computer ausgeführt werden. Obwohl Zombie-Prozesse nicht unbedingt schädlich für Ihr System sind, können sie Leistungsprobleme verursachen, wenn sie in großer Anzahl vorhanden sind.

Wenn Sie ein Linux-Anfänger sind und keine Ahnung haben, wie das Linux-Betriebssystem Prozesse verwaltet, ist es ein guter Anfang, zuerst zu lernen, was Prozesse sind.

Email
Was ist ein Prozess unter Linux?

Das Verständnis von Prozessen und Jobs ist ein wichtiger Aspekt, um Linux in den Griff zu bekommen. Folgendes müssen Sie wissen.

Weiter lesen

Verwandte Themen
  • Linux
  • Linux
  • wird bearbeitet
Über den Autor
Deepesh Sharma (45 Artikel veröffentlicht)

Deepesh ist der Junior Editor für Linux bei MUO. Er schreibt seit über 3 Jahren Informationsinhalte im Internet. In seiner Freizeit schreibt er gerne, hört Musik und spielt Gitarre.

Mehr von Deepesh Sharma

Abonnieren Sie unseren Newsletter

Melden Sie sich für unseren Newsletter an, um technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote zu erhalten!

Noch ein Schritt…!

Bitte bestätigen Sie Ihre E-Mail-Adresse in der E-Mail, die wir Ihnen gerade gesendet haben.

.