Cuando ejecuto Zotero / Firefox, a menudo se bloquean y me quedan procesos zombie; después de esto no puedo abrir nuevas instancias de Zotero o Firefox. Quiero deshacerme de estos procesos zombies en lugar de reiniciar, así que para <pid>
el proceso zombie,
$ ps -p <pid> -o ppid=
me da el <parent_pid>
y
ps aux | awk -v PID=<parent_pid> '$2 == PID {print $0}'
me dice que el proceso padre es /sbin/launchd
para el usuario crippledlambda
.
¿Hay alguna manera de reiniciar esto sin matar mi sistema?
sudo kill -1 <parent_pid>
no hace nada. Intenté escribir esto en un script y ejecutarlo con 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
y esto obviamente (?) me deja con una pantalla gris que no responde, así que tengo que reiniciar de todos modos. Gracias por adelantado por tus sugerencias.
launchd
que siempre debe leer los estados de salida de sus hijos de inmediato. Si no son realmente zombies, entonces deberías estar matándolos. En cualquier caso, matarlaunchd
va a causar más problemas de los que resuelve.Respuestas:
La forma correcta de detener e iniciar demonios de lanzamiento es launchctl unload .
Por ejemplo:
Puede detener un servicio de demonio de lanzamiento utilizando el subcomando de descarga de launchctl .
Para iniciar un demonio de lanzamiento deshabilitado o detenido:
★ Tenga cuidado al deshabilitar los daemons de lanzamiento al azar, especialmente los oficiales de Apple; potencialmente puede hacer que su sistema no se pueda arrancar hasta que comience en modo seguro y los vuelva a habilitar manualmente. No matas un launchctl como un proceso normal porque potencialmente puede matar tu sistema como has experimentado.
> más información sobre launchctl aquí . (Página de manual de Apple launchctl)
fuente
com.apple.bsd.launchdadd.plist
? No veolaunchd
exactamente Y gracias por la advertencia ...scrun simctl spawn <sim_id> sudo launchctl unload …
. Los archivos de plist están debajo$(xcode-select -p)/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/LaunchDaemons/
Desde la página de manual de launchd:
Por lo tanto, incluso si pudiera detenerlo, no podría iniciarlo, por lo que la respuesta es que no hay manera.
fuente