Wie man einen Zombie-Prozess auf einem Mac beendet


13

Wie kann ich einen Zombie-Prozess beenden oder den übergeordneten Prozess auf einem Mac mithilfe des Terminals finden?



3
@soandos Kein Duplikat, da es in diesem Thema nicht um Zombies geht. Keines der killSignale funktioniert für Zombies IIRC. Ich habe das schon einmal erlebt.
Daniel Beck

Normalerweise kann man Zombies töten, wenn der übergeordnete Prozess bekannt ist, aber dazu muss auch dieser getötet werden, was nicht immer eine angenehme Wahl ist. Deshalb frage ich mich, ob es dafür eine andere Lösung gibt.
eFrane

Antworten:


16

Hack Saw sagt:

Leider scheint es beim Töten von Zombies nur darum zu gehen , den Elternteil zu töten , und wenn der Elternteil / sbin / launchd ist, können Sie ihn nur durch einen Neustart töten.

Es wäre eine sehr schlechte Idee zu töten launchd, aber Sie können es HUP sagen.

Versuchen sudo kill -s HUP 1

Dies führt launchdzu einer Neuinitialisierung ohne Neustart. Dies hat in der Vergangenheit bei mir funktioniert (z. B. Entfernen von Zombie-Einträgen).


3

Leider scheint es beim Töten von Zombies nur darum zu gehen , den Elternteil zu töten , und wenn der Elternteil / sbin / launchd ist, können Sie ihn nur durch einen Neustart töten.

Ich bekomme Zombies davon, Xcode zu verwenden und den Simulator anzuhalten, und er übergibt die Zombies meinem persönlichen / sbin / launchd, der beim Abmelden nicht verschwunden ist.

Der Befehl ps -xo pid, ppid, stat, zeigt Ihnen Ihre Prozesse mit der übergeordneten ID in der zweiten Spalte.


1

Zombie-Prozesse sind bereits tot und können nicht getötet werden. Sie sollten automatisch aus der Prozesstabelle entfernt werden, wenn der übergeordnete Prozess stirbt.

Sie verlangsamen Ihre Maschine nicht und Sie können sie dort lassen (sie sind nur Einträge in der Prozesstabelle).

Es gibt eine maximale Anzahl von Prozessen (Sie können dies überprüfen sysctl kern.maxproc) und Zombie-Prozesse reduzieren sie (wenn sie gezählt werden).

Wenn Sie dieses Limit erreichen, können Sie keine neuen Prozesse erstellen und müssen neu starten.


"Sollte entfernt werden", aber sie sind nicht immer. Xcode ist schrecklich, wenn es darum geht, Zombie-Prozesse zu verlassen, und sie werden nicht bereinigt, selbst wenn Xcode stirbt / beendet / getötet wird.
JRG-Entwickler

@ JRG-Entwickler Ich stimme zu, aber sie sind kein Problem. Sie verbrauchen keine Ressourcen.
Matteo

2
Tatsächlich sind sie ein Problem, wenn zu viele erstellt werden und Fork keinen neuen Prozess starten kann und Sie gezwungen sind, einen Neustart durchzuführen.
Adam

2
Sie sind ein Problem, wenn Sie den abgestürzten Prozess neu starten und erneut verwenden möchten, dies jedoch nicht ohne Neustart.
MarcusJ

4
Wenn sich eine App in diesem Zustand befindet, können Sie sie erst neu starten, wenn der alte Eintrag gelöscht wurde. Es werden keine Ressourcen verwendet, aber die Verschmutzung der Tabelle verhindert, dass eine neue Instanz gestartet wird. Daher werden Sie blockiert, bis Sie neu starten.
George
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.