Launchctl: como posso configurar um serviço para parar de reiniciar automaticamente até a próxima reinicialização?

5

Eu tenho vários serviços configurados no launchctl e todos eles iniciam na inicialização e reiniciam automaticamente sempre que param por qualquer motivo. Isso é ótimo até agora.

Mas às vezes eu quero que um dos serviços saia e não reinicie por um tempo.

Existe uma maneira recomendada de fazer isso, além de remover o serviço do launchctl (que também o interrompe imediatamente, o que eu não quero fazer)?

    
por Andrew J. Brehm 03.04.2010 / 13:32

2 respostas

5

Eu encontrei uma maneira de fazer isso. Eu adicionei o seguinte ao arquivo plist.

Em vez de

<key>KeepAlive</key>
<true/>

Eu fiz isso

<key>KeepAlive</key>
<dict>
    <key>SuccessfulExit</key>
    <false/>
</dict>

Apenas definir KeepAlive como false interferiria no início do job. (Era presumivelmente esperando para ser chamado por alguém.) Mas o status do KeepAlive também pode ser determinado em tempo de execução. Este serviço agora reinicia automaticamente quando sai sem um bom motivo (ou seja, quando é eliminado), mas não quando sai por um motivo (ou seja, foi desligado regularmente). Isso é o que eu preciso.

    
por 03.04.2010 / 18:20
-1

Então você quer matar o processo sem reiniciá-lo, mas não quer matá-lo imediatamente? Isso realmente faz algum sentido para você?

Não, o launchd não possui esse recurso.

    
por 03.04.2010 / 17:30