Retourner aux forums || Retourner au forum Linux.general

Linux.general : Relancer un binaire automatiquement en cas de plantage

Posté par SubBass () le 07 juillet 2004
0
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 ?

merci

> Lire le message (9 commentaires, moyenne: 3,7).  

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.

simple

Posté par tinodeleste () le 07/07/2004 à 09:52. (lien). Évalué à 3.

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.

c'est moche mais ca marche

Posté par tito (page perso, ) le 07/07/2004 à 10:24. (lien). Évalué à 5.

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 !

Posté par Serge2 () le 07/07/2004 à 11:59. (lien). Évalué à 4.

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 !

    Posté par Jllc () le 07/07/2004 à 21:03. (lien). Évalué à 3.

    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.

Revenir en haut de page || Retourner aux forums || Retourner au forum Linux.general