bonjour à tous,
avez 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 ?
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.
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.
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.
Bonne réponse pour un binaire qui doit tourner dès le boot. Mais peut-on faire la même chose après le boot, par exemple lorsqu'un utilisateur se logue ? J'ai eu ce cas, et je n'avais pas trouvé de solution.
# simple
Posté par tinodeleste . Évalué à 3.
* * * * * 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 . Évalué à 4.
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 . Évalué à 5.
[^] # Re: simple
Posté par Aurélien Bompard (site web personnel) . Évalué à 4.
[^] # Re: simple
Posté par Pooly (site web personnel) . Évalué à 2.
| grep mon_binaire | grep -v grep ||
# c'est moche mais ca marche
Posté par tito (site web personnel) . Évalué à 5.
[^] # Re: c'est moche mais ca marche
Posté par Obsidian . Évalué à 3.
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 !
Posté par Serge2 . Évalué à 4.
x:2345:respawn:/monbinaire
Il sera lancé au boot et s'il tombe, il repartira automatiquement.
[^] # Re: Et dans inittab !
Posté par Jllc . Évalué à 3.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.