reinicia o programa a cada x minutos?

9

Eu tenho um programa Java mutithreaded que usa uma biblioteca opensource e esta biblioteca tem alguns bugs que causam deadlock. Eu relatei o bug, mas levará tempo para ele ser consertado, eu precisaria continuar usando este programa e desde que seja reiniciado a cada 2-3 horas, ele fará o trabalho por mim. Existe alguma maneira de fazer o programa reiniciar a cada x minutos?

    
por Arya 15.11.2012 / 22:39

3 respostas

11

Você pode tentar fazer isso em crontab :

crontab -e

então

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

O comando crontab significa:

  • a cada 3 horas
  • kill appli_name
  • iniciar o appli_name em segundo plano
por 15.11.2012 / 22:55
2

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

    
por 15.11.2012 / 23:20
0

Eu tenho um problema semelhante, pois meu site é atacado por bots, usando todos os meus processos httpd.

Eu fiz um script de shell simples para lidar com isso, matando todos os processos do httpd a cada dez minutos. (Eu sei, não é uma correção adequada, mas estou mudando os provedores para um que me dará suporte de firewall adequado, por isso não quero investir nada em uma correção adequada agora.)

Isso é o que eu uso:

while [ 1 ]; do  uptime; killall httpd; psg httpd | wc; sleep 600; done

Os comandos "uptime" e "psg httpd | wc" simplesmente fornecem um rastreio no terminal e são desnecessários. "psg" é uma função que simplesmente executa ps e o usa para o argumento, então ele imprime o número de instâncias do processo "httpd" que estão sendo executadas.

Para os seus propósitos, tudo que você precisa é o "killall" e alterar "600" para o número de segundos que você quer esperar entre matar os processos.

while [ 1 ]; do killall name_of_executable; sleep 600; done
    
por 17.11.2012 / 03:44

Tags