O Launchd não lança apenas programas, monitora-os à medida que são executados. Por padrão, ele espera que os programas continuem sendo executados (como daemons), não inicie algum outro programa (/ cópia em segundo plano de si mesmo / o que seja) e saia. Se o programa sair, o launchd faz duas coisas que podem causar problemas para um programa de execução e saída como youtrack start
: ele "limpará" os subprocessos que sobraram (como o processo real do servidor) e (dependendo de algum outro configurações) talvez tente novamente o programa "falhou". Existem duas maneiras de resolver isso:
-
Execute a forma de início: execute o item launchd
java -Xmx512m -jar youtrack.jar 8080
diretamente (observe que cada "palavra" do comando deve ser um elemento separado da matrizProgramArguments
). Se você adicionar<key>KeepAlive</key><true/>
ao launchd .plist, ele reiniciará o servidor se ele falhar ou sair por qualquer motivo (observe que isso inclui a morte, portanto, você deve reescreveryoutrack stop
para usarlaunchctl unload ...
e deixar o launchd fazer a matança). -
Diga ao launchd para não esperar que ele continue rodando, e não para matar os subprocessos. Adicione isso ao seu .plist para desativar o comportamento padrão:
<key>KeepAlive</key> <false/> <key>AbandonProcessGroup</key> <true/>