reiniciar el programa cada x minutos?

10

Tengo un programa Java multiproceso que usa una biblioteca de código abierto y esta biblioteca tiene algunos errores que causan un punto muerto. Informé el error pero tomará tiempo para que se solucione, necesitaría continuar usando este programa y siempre que reinicia cada 2-3 horas, hará el trabajo por mí. ¿Hay alguna manera de hacer que el programa se reinicie cada x minutos?

Aria
fuente
3
Puede escribir una secuencia de comandos que elimine y reinicie la tarea cada 2-3 horas.
gt6989b
Para seguir con lo que @ gt6989b, escribiría un script de Python que simplemente realiza un bucle y espera hasta que hayan pasado 2-3 horas, y luego reinicia el programa. Puede encontrar útiles el subproceso Python y los módulos sh .
Avance

Respuestas:

12

Puedes intentar hacerlo en tu crontab:

crontab -e

entonces

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

El crontabcomando significa:

  • cada 3 horas
  • kill appli_name
  • iniciar appli_name en segundo plano
Gilles Quenot
fuente
Así es como actualmente resuelvo un problema similar. Reinicio un cierto software todas las noches a las 0:00 a través de cron, ya que el software tiende a corromper su archivo de estado después de 4-5 días. He instalado el software como un servicio y luego lo ejecuto service <appname> restart > /dev/null 2>&1en los momentos deseados.
Daniel Andersson el
2

Le sugiero que configure Supervisor para su tarea. Puede monitorear el proceso, reiniciar si falla, también proporciona redirección de salida y otras características interesantes. Vea el ejemplo del programa para comenzar.

gertvdijk
fuente
+1, esta parece ser una solución más "limpia" en lugar de crontab(aunque ambas soluciones funcionan bien). Sin embargo, creo que Supervisor es mejor para configurar qué señales enviar un proceso y cuándo (es decir, cuándo enviar SIGTERM, y cuánto esperar antes de enviar SIGKILL, etc.).
Avance