Prozessbeendigung
100%

Prozesse · Lektion 5

Prozessbeendigung

Erfahre, wie Beendigungsstatus, Warten, Zombies und neue Elternzuordnung den Lebenszyklus eines Linux-Prozesses abschließen.

Ein Prozess kann enden, indem er aus seiner Hauptfunktion zurückkehrt, eine Beendigungsschnittstelle aufruft oder durch ein Signal beendet wird. Der Kernel gibt die meisten seiner Ressourcen frei, doch die Eltern-Kind-Abrechnung wird fortgesetzt, bis der Elternprozess die Beendigungsinformationen abholt.

Beendigungsstatus

Ein sich normal beendendes Programm liefert einen ganzzahligen Status. Konventionsgemäß bedeutet Status 0 Erfolg, während ein von null verschiedener Wert eine Art von Fehler oder ein anderes Ergebnis meldet. Die genaue Bedeutung von Werten ungleich null gehört zur Schnittstelle des jeweiligen Programms.

Prüfe in einer Shell den Status der letzten Vordergrund-Pipeline mit:

$ command
$ printf '%s\n' "$?"

Shells stellen einen begrenzten codierten Statusbereich bereit und bilden außerdem Signalbeendigungen ab. Dieser Wert ist daher kein vollständiger Diagnosebericht. Programme sollten ihre eigenen Beendigungscodes dokumentieren.

Welcher normale Beendigungsstatus bedeutet gemäß Unix-Konvention Erfolg?

Warten und Aufräumen

Der Kernel erfasst, wie sich ein Kindprozess beendet hat, und benachrichtigt dessen Elternprozess. Der Elternprozess verwendet einen Aufruf aus der Systemaufruffamilie wait(), um diese Informationen abzurufen. Das Abholen des Eintrags wird als Reaping bezeichnet.

Warten kann außerdem die Ausführung koordinieren: Eine Shell wartet auf einen Vordergrundbefehl, bevor sie eine neue Eingabeaufforderung anzeigt, kann das Warten auf einen Hintergrundjob aber aufschieben. Ein gut entwickelter langlebiger Elternprozess muss Kindprozesse aufräumen, ohne unabhängige Arbeit zu blockieren.

Welche Informationen kann ein Elternprozess mit einem erfolgreichen wait-Vorgang abrufen?

Zombie-Prozesse

Nachdem sich ein Kindprozess beendet hat, aber bevor sein Beendigungseintrag aufgeräumt wurde, erscheint er als Zombie, häufig mit dem Zustand Z in ps. Er wird nicht mehr ausgeführt und besitzt keinen gewöhnlichen Adressraum mehr, doch ein minimaler Eintrag in der Prozesstabelle und Abrechnungsinformationen bleiben erhalten.

Ein Signal an einen Zombie kann ihn nicht noch einmal beenden. Diagnostiziere bei einer dauerhaften Ansammlung von Zombies den Elternprozess, der nicht wartet, starte oder korrigiere diesen Elternprozess nach einem geeigneten Betriebsverfahren oder ermögliche die neue Elternzuordnung zu einem Prozess, der den Zombie aufräumt. Eine große Zahl kann die Kapazität für PIDs oder Prozesstabelleneinträge erschöpfen.

Welche Beschreibung passt zu einem Zombie-Prozess?

Verwaiste Prozesse und neue Elternzuordnung

Wenn sich ein Elternprozess beendet, während sein Kind weiterläuft, ordnet der Kernel diesen Kindprozess einem geeigneten Subreaper oder dem init-Prozess im betreffenden PID-Namensraum als neues Kind zu. Der Kindprozess kann laufen, schlafen, angehalten sein oder später zum Zombie werden. „Verwaist“ beschreibt den Verlust der ursprünglichen Elternbeziehung und nicht einen einzelnen Ausführungszustand.

Der adoptierende Prozess wird für das Abholen des Beendigungsstatus verantwortlich. Moderne Dienstmanager und Containerumgebungen machen es wichtig, nicht anzunehmen, dass der neue Elternprozess immer PID 1 des Hosts ist.

Was geschieht, wenn ein Prozess seinen ursprünglichen Elternprozess überlebt?

Lektion abgeschlossen

Sie haben Prozessbeendigung abgeschlossen

Du kannst nun das Ende der Ausführung von der Bereinigung durch den Elternprozess unterscheiden.

  • Interpretiere null als konventionellen Erfolg und von null verschiedene Statuswerte anhand der Programmdokumentation.

  • Verwende Warten, um die Beendigungsinformationen eines Kindprozesses abzuholen.

  • Erkenne einen Zombie als beendet, aber noch nicht aufgeräumt.

  • Erkenne einen verwaisten Prozess als Kind, das nach der Beendigung seines ursprünglichen Elternprozesses neu zugeordnet wurde.

Lernfortschritt speichern

Erstellen Sie ein kostenloses Konto, um diese Lektion zu speichern und auf jedem Gerät weiterzulernen.

Kostenloses Konto erstellen
Nächste Lektion
Zurück zu Prozesse