Zombie-Prozess

Ein Zombie-Prozess ist ein beendeter Prozess, der in der Prozesstabelle verbleibt, bis sein Elternprozess den Exit-Status abholt. In kleiner Zahl harmlos, können zu viele Zombies jedoch Systemressourcen erschöpfen.

Ein Zombie-Prozess ist ein Prozess in Unix- oder Linux-Systemen, der seine Ausführung beendet hat, aber weiterhin in der Prozesstabelle verbleibt. Er wird auch als defunct process bezeichnet. Obwohl der Prozess nicht mehr läuft, bleibt sein Eintrag bestehen, bis der Elternprozess seinen Exit-Status abfragt.

Zombie-Prozesse verbrauchen keine CPU- oder nennenswerten Speicherressourcen (außer dem kleinen Eintrag in der Prozesstabelle). Eine große Anzahl von Zombies kann jedoch auf ein Problem hinweisen und schließlich die Systemressourcen erschöpfen.

Wie Zombie-Prozesse entstehen

  • Wenn ein Kindprozess beendet ist, sendet er einen Exit-Status an den Elternprozess.
  • Das Betriebssystem behält den Prozess so lange in der Prozesstabelle im „Zombie“-Zustand, bis der Elternprozess den Status abholt (z. B. mit wait() oder ähnlichen Systemaufrufen).
  • Wenn der Elternprozess dies versäumt, bleibt der Zombie bestehen.

Erkennen von Zombie-Prozessen

Zombie-Prozesse können mit Befehlen wie diesem identifiziert werden:

ps aux | grep 'Z'

In der Prozessliste erscheinen Zombies mit einem Z (zombie) in der Statusspalte, oft zusätzlich mit der Kennzeichnung <defunct>.

Umgang mit Zombie-Prozessen

  • Auf automatische Bereinigung warten – Normalerweise sammeln gut programmierte Elternprozesse ihre Kindprozesse automatisch ein.
  • Elternprozess beenden oder neu starten – Wenn der Elternprozess den Exit-Status nicht abfragt, entfernt ein Neustart oder das Beenden des Prozesses meist den Zombie.
  • Re-Parenting – Wenn der Elternprozess beendet wird, übernimmt init (PID 1) den Zombie und räumt ihn automatisch auf.

Beispiel-Szenario

  1. Ein Webserver startet mehrere Worker-Prozesse.
  2. Einer dieser Worker beendet seine Arbeit, aber der Server ruft wait() nicht auf, um den Exit-Code zu sammeln.
  3. Der Worker bleibt als Zombie in der Prozesstabelle bestehen.

Risiken von Zombie-Prozessen

  • Ressourcenerschöpfung – Zu viele Zombies können die Prozesstabelle füllen.
  • Hinweis auf Fehler – Anhaltende Zombies deuten auf Probleme im Anwendungscode oder Prozessmanagement hin.

Fazit

Zombie-Prozesse sind in geringer Zahl normal und harmlos, ein massenhaftes Auftreten signalisiert jedoch mögliche Softwareprobleme. Sauberes Prozessmanagement und korrekte Bereinigung stellen sicher, dass beendete Prozesse richtig entfernt werden und verhindern so eine Ressourcenerschöpfung.