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?


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

É 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.


+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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.