Eu tenho um VPS com alguns aplicativos Java (criados com o "Play Framework") em execução nas portas 9000, 9001, 9002 e 9003. O Provedor VPS (iPage) reinicia servidores inesperadamente de tempos em tempos, deixando os quatro processos inativos.
Os processos que eu executo são iniciados por
nohup ./start -Dhttp.port=9000,nohup ./start -Dhttp.port=9001,nohup ./start -Dhttp.port=9002enohup ./start -Dhttp.port=9003
com todos os quatro startlançadores feitos por "Play" e localizados em pastas diferentes (dentro /opt).
Cada vez que o iPage reinicia o meu VPS, todas as quatro pastas mantêm o arquivo 'RUNNING_PID' com o antigo PID, então eu tenho que excluir manualmente esses arquivos para poder colocá-los novamente.
Eu estava checando esta resposta de uma pergunta relativamente semelhante ( como eu escrevo um script bash para reiniciar um processo se ele morrer? ) (Sem especificação de porta e nohupestilo, eu acho) sem sucesso.
Isto é o que eu fiz até agora:
Criou um
tryRebootarquivo (salvo em/opt/myJavaApp9000/) com o seguinte conteúdo:until start -Dhttp.port=9000; do echo "9000 process crashed with exit code $?. Respawning.." >&2 sleep 1 doneAdicionado
@reboot /opt/myJavaApp9000/tryRebootaocrontabarquivo usandocrontab -e
Após reiniciar o servidor (via iPage Reboot), todos os quatro mantiveram seus RUNNING_PIDarquivos, mas nenhum deles foi reiniciado. Qual poderia ser o problema?
chmod +x tryReboot, mas não tinha percebido que o script não estava sendo executado. Quando eu faço./tryRebootisso diz "./tryReboot: linha 4: erro de sintaxe próximo ao token inesperado 'pronto' ./tryReboot: linha 4: 'pronto'" ... Tornou otryRebootmais simples e colocou: até o início; echo "O servidor 'myserver' travou com o código de saída $ ?. Respawning .."> & 2 sleep 5 done Sem nenhuma alteração. Quanto às suas outras perguntas, start é o lançador dos aplicativos Java que eu fiz (essa é a maneira Reproduzir Framework faz isso): S