Zombie-Prozess
Auch: defunct, toter Prozess
Kurze Antwort
Ein Zombie-Prozess ist ein Prozess, der fertig ist, aber noch einen Eintrag in der Prozesstabelle hat, weil sein übergeordneter Prozess seinen Exit-Status noch nicht abgeholt hat. Er verbraucht keine CPU und belegt fast keinen Speicher.
Wenn ein Prozess endet, behält das System einen kleinen Eintrag, damit der übergeordnete Prozess erfahren kann, wie er geendet hat. Normalerweise liest der übergeordnete Prozess diesen Eintrag sofort, und er verschwindet. Tut er das nie, bleibt der beendete Prozess als Zombie gelistet.
Ein paar Zombies sind harmlos. Eine stetig wachsende Zahl deutet auf einen Fehler im übergeordneten Programm hin.
Auf dieser Seite
So findest du Zombie-Prozesse auf dem Mac
Führe im Terminal ps -axo pid,ppid,stat,comm | awk '$3 ~ /^Z/' aus. Jede Zeile ist ein Zombie, und die Spalte PPID zeigt den übergeordneten Prozess, der dafür verantwortlich ist.
So wirst du einen Zombie-Prozess los
Einen Zombie kannst du nicht beenden, denn er ist bereits beendet. Die Lösung liegt beim übergeordneten Prozess. Beende die übergeordnete App oder starte sie neu, dann wird der Zombie an launchd übergeben, das ihn aufräumt.
Beende nicht launchd oder andere Systemprozesse, um Zombies loszuwerden. Ist der übergeordnete Prozess ein Systemprozess, räumt ein Neustart des Mac sie auf.
So findest du den übergeordneten Prozess eines Zombies
In der Spalte mit dem vollständigen Befehl von ps wird ein Zombie als <defunct> angezeigt, weil sein Programm bereits beendet ist. Um den übergeordneten Prozess musst du dich kümmern.
- Führe
ps -axo pid,ppid,stat,comm | awk '$3 ~ /^Z/'aus, um Zombies aufzulisten. Das Z in der Spalte STAT kennzeichnet einen Zombie. - Merke dir die Zahl in der Spalte PPID.
- Führe
ps -p <PPID> -o pid,user,commandaus, um zu sehen, welches Programm der übergeordnete Prozess ist. - Wähle in der Aktivitätsanzeige „Darstellung“ > „Alle Prozesse, hierarchisch“, um denselben Baum aus über- und untergeordneten Prozessen zu sehen.
- Kümmere dich um den übergeordneten Prozess. Ist es eine App, die du geöffnet hast, beende sie und öffne sie wieder. Ist es eine Shell oder ein Skript im Terminal, schließe das Fenster oder stoppe das Skript. Ist es ein Systemprozess, starte den Mac neu.
Normal oder bedenklich
Ein übergeordnetes Programm holt den Exit-Status eines Unterprozesses mit den Systemaufrufen der wait-Familie ab. Ein Programm, das Unterprozesse startet, aber nie auf sie wartet, hinterlässt Zombies. Das ist ein Fehler im übergeordneten Programm, und nur seine Entwickler:innen können ihn dauerhaft beheben.
Einen Zombie kurz zu sehen, ist normal. Er existiert zwischen dem Moment, in dem ein Prozess endet, und dem, in dem sein übergeordneter Prozess den Exit-Status liest, und das ist meist sehr kurz.
Genauer hinsehen solltest du, wenn derselbe übergeordnete Prozess viele Zombies behält oder ihre Zahl über Stunden wächst. Zum Zählen führe ps -axo stat | grep -c '^Z' aus. Die Prozessgrenzen deines Mac siehst du mit sysctl kern.maxproc kern.maxprocperuid.
Zombie-, verwaiste und hängende Prozesse sind nicht dasselbe
Diese drei Begriffe werden oft verwechselt, und jeder braucht eine andere Lösung.
- Ein Zombie ist fertig. Übrig ist nur sein Eintrag in der Prozesstabelle.
- Ein verwaister Prozess läuft noch, aber sein übergeordneter Prozess ist beendet. macOS übergibt ihn an launchd, PID 1, das sein neuer übergeordneter Prozess wird.
- Ein hängender Prozess läuft noch, steckt aber fest und wird in der Aktivitätsanzeige oft mit „reagiert nicht“ angezeigt. Anders als ein Zombie lässt er sich beenden oder sofort beenden.
Was du lassen solltest
In kleiner Zahl sind Zombies harmlos, es gibt also keinen Grund, Risiken einzugehen, um sie loszuwerden.
- Führe
kill -9nicht auf die PID des Zombies aus. Er ist bereits beendet, das Signal bewirkt also nichts. - Beende nicht launchd oder andere Systemprozesse, um Zombies loszuwerden. Ein Neustart erledigt dasselbe gefahrlos.
- Beende den übergeordneten Prozess nicht, ohne zu prüfen, was er ist. Ist es eine App mit offenen Dokumenten, sichere zuerst deine Arbeit.
Häufige Fragen
Was ist ein Zombie-Prozess auf dem Mac?
Ein Prozess, der fertig ist, aber noch gelistet wird, weil sein übergeordneter Prozess seinen Exit-Status nicht abgeholt hat. Er verbraucht keine CPU.
Wie beende ich einen Zombie-Prozess?
Direkt beenden kannst du ihn nicht. Beende seinen übergeordneten Prozess, der in der Spalte PPID von ps steht, oder starte ihn neu, dann verschwindet der Zombie.
Sind Zombie-Prozesse schädlich?
Ein paar nicht. Jeder belegt einen Platz in der Prozesstabelle, eine große und wachsende Zahl kann also irgendwann Probleme machen und deutet auf ein fehlerhaftes übergeordnetes Programm hin.
Warum kann kill -9 einen Zombie-Prozess nicht entfernen?
Ein Zombie läuft nicht, das Signal hat also nichts zu stoppen. Nur wenn sein übergeordneter Prozess den Exit-Status abholt oder selbst endet, verschwindet er.
Entfernt ein Neustart des Mac Zombie-Prozesse?
Ja. Ein Neustart beendet jeden Prozess, auch Zombies und ihre übergeordneten Prozesse.
Sind Zombie-Prozesse ein Zeichen für Schadsoftware?
Nein. Sie gehören ganz normal dazu, wie Unix-Prozesse enden. Viele Zombies desselben übergeordneten Prozesses bedeuten meist, dass dieses Programm einen Fehler hat.
Verwandte Begriffe
Du kommst von Windows? Mehr dazu: Task-Manager für den Mac oder die besten Alternativen zur Aktivitätsanzeige. Oder stöbere durch alle Begriffe im Glossar.