Quando executo o Zotero / Firefox, eles costumam travar e eu fico com processos de zumbis; depois disso, não consigo abrir novas instâncias do Zotero ou Firefox. Eu quero me livrar desses processos zumbis em vez de reiniciar. Portanto, para <pid>
o processo zumbi,
$ ps -p <pid> -o ppid=
dá-me o <parent_pid>
e
ps aux | awk -v PID=<parent_pid> '$2 == PID {print $0}'
diz-me que o processo pai é /sbin/launchd
para o usuário crippledlambda
.
Existe uma maneira de reiniciar isso sem matar meu sistema?
sudo kill -1 <parent_pid>
faz nada. Eu tentei escrever isso em um script e executá-lo com 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
e isso obviamente (?) me deixa com uma tela cinza que não responde, então eu tenho que reiniciar de qualquer maneira. Agradecemos antecipadamente por suas sugestões.
launchd
sempre deve ler imediatamente o status de saída de seus filhos. Se eles não são verdadeiramente zumbis, você deve matá-los. Em qualquer um dos casos, matarlaunchd
vai causar mais problemas do que resolve.Respostas:
A maneira correta de parar e iniciar daemons de inicialização é o launchctl unload .
Por exemplo:
É possível parar um serviço de daemon de ativação usando o subcomando unload de launchctl .
Para iniciar um daemon de inicialização desabilitado ou parado:
★ Tenha cuidado ao desativar os daemons de inicialização ao acaso - especialmente os da Apple oficiais; ele pode potencialmente tornar seu sistema não inicializável até você iniciar no modo de segurança e reativá-los manualmente. Você não mata um launchctl como um processo normal porque ele pode potencialmente matar seu sistema como você experimentou.
> mais informações sobre o launchctl aqui . (Página de manual do launchctl da Apple)
fonte
com.apple.bsd.launchdadd.plist
? Eu não vejolaunchd
exatamente. E obrigado pelo aviso ...scrun simctl spawn <sim_id> sudo launchctl unload …
. Os arquivos plist estão sob$(xcode-select -p)/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/LaunchDaemons/
Na página do manual launchd:
Portanto, mesmo que você pudesse pará-lo, não seria capaz de iniciá-lo, então a resposta é que não há como.
fonte