• # simple

    Posté par  . É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  . É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  . Évalué à 5.

        sans les crochets, le grep va aussi renvoyer la ligne "grep mon_binaire" et ne rien faire...
        • [^] # Re: simple

          Posté par  (site web personnel) . É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  (site web personnel) . Évalué à 2.

          ou alors :
          | grep mon_binaire | grep -v grep ||
  • # c'est moche mais ca marche

    Posté par  (site web personnel) . Évalué à 5.

    while true; do ./monbinaire; done
    • [^] # Re: c'est moche mais ca marche

      Posté par  . É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  . É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  . É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.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.