redémarrer le programme toutes les x minutes?

10

J'ai un programme Java mutithread qui utilise une bibliothèque opensource et cette bibliothèque a quelques bugs qui provoquent un blocage J'ai signalé le bogue mais il faudra du temps pour qu'il soit corrigé, je devrais continuer à utiliser ce programme et tant qu'il redémarre toutes les 2-3 heures, il fera le travail pour moi. Existe-t-il un moyen de faire redémarrer le programme toutes les x minutes?

Arya
la source
3
Vous pouvez écrire un script qui tuerait et redémarrerait la tâche toutes les 2-3 heures.
gt6989b
Pour poursuivre avec @ gt6989b, j'écrirais un script Python qui boucle et attend simplement jusqu'à ce que 2-3 heures se soient écoulées, puis redémarre le programme. Vous pouvez trouver le sous - processus Python et les modules sh utiles.
Percée

Réponses:

12

Vous pouvez essayer de faire dans votre crontab:

crontab -e

puis

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

La crontabcommande signifie:

  • toutes les 3 heures
  • tuer nom_appli
  • démarrer appli_name en arrière-plan
Gilles Quenot
la source
C'est ainsi que je résous actuellement un problème similaire. Je redémarre un certain logiciel tous les soirs à 0h00 via cron, car le logiciel a tendance à corrompre son fichier d'état après 4 à 5 jours. J'ai installé le logiciel en tant que service, puis je l'exécute service <appname> restart > /dev/null 2>&1aux heures souhaitées.
Daniel Andersson
2

Je vous suggère de configurer Supervisor pour votre tâche. Il peut surveiller le processus, redémarrer en cas d'échec, fournit également une redirection de sortie et d'autres fonctionnalités intéressantes. Voir l' exemple du programme pour commencer.

gertvdijk
la source
+1, cela semble être une solution plus "propre" par opposition à crontab(bien que les deux solutions fonctionnent très bien). Cependant, je trouve que le superviseur est mieux à même de configurer quels signaux envoyer un processus et quand (c'est-à-dire quand envoyer SIGTERM, et combien de temps attendre avant d'envoyer SIGKILL, etc.).
Percée