reiniciar o programa a cada x minutos?

10

Eu tenho um programa Java mutithreaded que usa uma biblioteca de código-fonte aberto e esta biblioteca tem alguns bugs que causam um impasse. Eu relatei o bug, mas levará um tempo para que seja corrigido. Eu precisaria continuar usando esse programa e enquanto ele reiniciar a cada 2-3 horas, ele fará o trabalho para mim. Existe alguma maneira de fazer o programa reiniciar a cada x minutos?

Arya
fonte
3
Você pode escrever um script que interrompa e reinicie a tarefa a cada 2-3 horas.
gt6989b
Para acompanhar o que @ gt6989b, eu escreveria um script Python que simplesmente faz um loop e aguarda até 2-3 horas se passaram e, em seguida, reinicia o programa. Você pode achar útil o subprocesso Python e os módulos sh .
Breakthrough

Respostas:

12

Você pode tentar fazer no seu crontab:

crontab -e

então

 11 */3 * * * /usr/bin/pkill -f appli_name; /path/to/appli_name & &>/dev/null

O crontabcomando significa:

  • a cada 3 horas
  • matar appli_name
  • iniciar appli_name em segundo plano
Gilles Quenot
fonte
É assim que atualmente resolvo um problema semelhante. Eu reinicio um determinado software todas as noites às 0:00 via cron, pois o software tem tendência a corromper seu arquivo de estado após 4-5 dias. Instalei o software como um serviço e depois executei service <appname> restart > /dev/null 2>&1nos horários desejados.
Daniel Andersson
2

Eu sugiro que você configure o Supervisor para sua tarefa. Ele pode monitorar o processo, reiniciar se falhar, também fornece redirecionamento de saída e outros recursos interessantes. Veja o exemplo para o programa começar.

gertvdijk
fonte
+1, essa parece ser uma solução mais "limpa", em oposição a crontab(embora ambas as soluções funcionem bem). No entanto, acho que o Supervisor é melhor na configuração de quais sinais enviar um processo e quando (ou seja, quando enviar SIGTERMe quanto tempo esperar antes de enviar SIGKILL, etc ...).
Breakthrough