Wenn ich Zotero / Firefox starte, stürzen sie oft ab und ich habe Zombie-Prozesse; Danach kann ich keine neuen Instanzen von Zotero oder Firefox mehr öffnen. Ich möchte diese Zombie-Prozesse loswerden, anstatt neu zu starten, also für <pid>
den Zombie-Prozess,
$ ps -p <pid> -o ppid=
gibt mir das <parent_pid>
und
ps aux | awk -v PID=<parent_pid> '$2 == PID {print $0}'
sagt mir, der übergeordnete Prozess ist /sbin/launchd
für Benutzer crippledlambda
.
Gibt es eine Möglichkeit, dies neu zu starten, ohne mein System zu beenden?
sudo kill -1 <parent_pid>
tut nichts. Ich habe versucht, dies in ein Skript zu schreiben und es auszuführen mit sudo
:
for i in `launchctl list | grep launchd | awk -v PID=<parent_pid> '$1==PID { print $NF }'`; do `launchctl stop $i && launchctl start $i` ; done
und dies lässt mich offensichtlich (?) mit einem nicht reagierenden grauen Bildschirm zurück, so dass ich trotzdem neu starten muss. Vielen Dank im Voraus für Ihre Vorschläge.
launchd
immer sofort die Ausgangszustände seiner Kinder abgelesen werden sollten. Wenn sie nicht wirklich Zombies sind, sollten Sie sie töten. In beiden Fällen wird das Tötenlaunchd
mehr Probleme verursachen, als es löst.Antworten:
Der richtige Weg, um Start-Daemons zu stoppen und zu starten, ist launchctl unload .
Beispielsweise:
Sie können einen Start - Daemon - Dienst mit dem Stopp Entladen subcommand von launchctl .
So starten Sie einen deaktivierten oder gestoppten Startdämon:
★ Seien Sie vorsichtig, wenn Sie Launch-Daemons willkürlich deaktivieren - insbesondere die offiziellen Apple-Daemons. Dies kann dazu führen, dass Ihr System möglicherweise nicht mehr gestartet werden kann, bis Sie im abgesicherten Modus starten und diese manuell wieder aktivieren. Sie beenden ein Launchctl nicht wie einen normalen Prozess, da es möglicherweise Ihr System beenden kann , wie Sie es erlebt haben.
> mehr Infos zu launchctl hier . (Apple launchctl man page)
quelle
com.apple.bsd.launchdadd.plist
? Ich sehe nichtlaunchd
genau Und danke für die Warnung ...scrun simctl spawn <sim_id> sudo launchctl unload …
. Die Plist-Dateien sind unter$(xcode-select -p)/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/LaunchDaemons/
Auf der launchd-Manpage:
Selbst wenn Sie es stoppen könnten, könnten Sie es nicht starten. Die Antwort lautet also, dass es keinen Weg gibt.
quelle