Retourner aux forums || Retourner au forum Linux.general
Linux.general : Relancer un binaire automatiquement en cas de plantage
Posté par SubBass () le 07 juillet 2004avez vous un script dans vos cartons qui testerait la présence dans la liste de process ps d'un binaire et qui permettrait de le relancer en cas de plantage ?
merci
> Lire le message (9 commentaires, moyenne: 3,7).
simple
dans un crontab:
* * * * * ps aux|grep [m]onbinaire || monbinaire &
si le binaire n'est plus dans la liste, grep renvoie faux, donc || le relance... minutes.
gaffe à la variable PATH.
-
[^]Re: simple
Posté par SubBass () le 07/07/2004 à 09:59. (lien). Évalué à 4.merci :)
je ne connaissais pas le double pipe (||) : "est un "OU" logique. si la premiere commande renvoie une erreur, on balance la seconde. "
question subsidiaire : pourquoi avoir mis les crochets [m]onbinaire ?-
[^]Re: simple
Posté par tinodeleste () le 07/07/2004 à 10:11. (lien). Évalué à 5.sans les crochets, le grep va aussi renvoyer la ligne "grep mon_binaire" et ne rien faire...
-
[^]Re: simple
Posté par Aurélien Bompard (Jabber id, page perso, ) le 07/07/2004 à 19:16. (lien). Évalué à 4.En effet. Il vaut mieux utiliser pgrep. Ou, encore plus sioux: killall -0 tonprog. C'est un zéro, pas un o majuscule. Ca enverra pas de signal à ton appli, mais le code de retour sera 1 si il la trouve pas. Enfin c'est vraiment très sioux, pgrep est mieux je pense.
-
[^]Re: simple
Posté par Pooly (page perso, ) le 08/07/2004 à 14:49. (lien). Évalué à 2.ou alors :
| grep mon_binaire | grep -v grep ||
-
-
c'est moche mais ca marche
while true; do ./monbinaire; done
-
[^]Re: c'est moche mais ca marche
Posté par Obsidian () le 08/07/2004 à 22:51. (lien). Évalué à 3.Au contraire, je crois que c'est encore ce qu'il y a de plus propre !
Au moins le programme est relancé immédiatement s'il plante, c'est simple, on évite le polling de la crontab, le lancement d'un daemon de surveillance, et aussi d'avoir à utiliser inittab pour faire cela.
La seule chose à laquelle il faut faire attention, c'est aux programmes qui meurent trop vite (parce qu'une condition nécessaire n'est pas remplie par exemple). "initab" a le bon goût de désactiver pendant 5 minutes les programmes qui renaissent trop vite.
Donc un
while true; do ./monbinaire; sleep 5; done
permet de préserver la vie de ton système :-)
Et dans inittab !
Tu peux mettre "tonbinaire" dans /etc/inittab
x:2345:respawn:/monbinaire
Il sera lancé au boot et s'il tombe, il repartira automatiquement.
-
[^]Re: Et dans inittab !
Revenir en haut de page || Retourner aux forums || Retourner au forum Linux.general



Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.