Lorsque j'exécute Zotero / Firefox, ils plantent souvent et je me retrouve avec des processus zombies; après cela, je ne peux pas ouvrir de nouvelles instances de Zotero ou Firefox. Je veux me débarrasser de ces processus zombies plutôt que de redémarrer, donc pour <pid>
le processus zombie,
$ ps -p <pid> -o ppid=
me donne le <parent_pid>
et
ps aux | awk -v PID=<parent_pid> '$2 == PID {print $0}'
me dit que le processus parent est /sbin/launchd
pour l'utilisateur crippledlambda
.
Existe-t-il un moyen de redémarrer cela sans tuer mon système?
sudo kill -1 <parent_pid>
ne fait rien. J'ai essayé d'écrire ceci dans un script et de l'exécuter avec 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
et cela évidemment (?) me laisse avec un écran gris qui ne répond pas donc je dois quand même redémarrer. Merci en avance pour vos suggestions.
launchd
faut toujours lire immédiatement le statut de sortie de ses enfants. S'ils ne sont pas vraiment des zombies, alors vous devriez les tuer. Dans les deux cas, tuerlaunchd
va causer plus de problèmes qu'il n'en résout.Réponses:
La bonne façon d'arrêter et de démarrer les démons de lancement est launchctl unload .
Par exemple:
Vous pouvez arrêter un service démon de lancement en utilisant la décharge sous - commande de launchctl .
Pour démarrer un démon de lancement désactivé ou arrêté:
★ Soyez prudent lorsque vous désactivez les démons de lancement au hasard - en particulier ceux d'Apple officiels; il peut potentiellement rendre votre système non amorçable jusqu'à ce que vous démarriez en mode sans échec et que vous les réactiviez manuellement. Vous ne tuez pas un launchctl comme un processus normal car il peut potentiellement tuer votre système comme vous l'avez connu.
> plus d'informations sur launchctl ici . (Page de manuel Apple launchctl)
la source
com.apple.bsd.launchdadd.plist
? Je ne vois paslaunchd
exactement. Et merci pour l'avertissement ...scrun simctl spawn <sim_id> sudo launchctl unload …
. Les fichiers plist sont sous$(xcode-select -p)/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/LaunchDaemons/
Depuis la page de manuel launchd:
Par conséquent, même si vous pouviez l'arrêter, vous ne pourriez pas le démarrer. La réponse est donc qu'il n'y a aucun moyen.
la source