Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Bash] service online/offline

    13 février 2008 à 7:10:13

    Bonjour, alors j'ai fait un petit code qui me dit si httpd est lancer le nombre de pid et si il n'y est pas 0, j'aimerais que cela face un echo "offline" ou online. Mais je ne trouve pas la solution si vous pouriez m'aider ! Merci

    ps aux | grep httpd | grep -v grep | wc -l
    • Partager sur Facebook
    • Partager sur Twitter
      13 février 2008 à 8:26:56

      Salut,

      D'abord, le double grep (grep httpd | grep -v grep), c'est pour ne pas afficher la ligne correspondant au processus grep dans le résultat de ps ? Dans ce cas, il y a un moyen un peu plus élégant (enfin, AMHA) de procéder :
      1. ps aux | grep [h]ttpd

      "[h]ttpd" est transformé par le shell en "httpd" (ce qui permet à grep de trouver la ligne qui t'intéresse), et comme la commande grep apparaît dans la sortie de ps telle qu'elle a été lancée ("grep [h]ttpd"), elle ne correspond pas au motif demandé et n'est pas donc sélectionnée par grep.

      Ensuite, plus simple que de compter le nombre de lignes retourné par grep, tu peux utiliser sa valeur de retour : 0 si la recherche a sorti quelque chose, 1 si elle n'a rien donné. La valeur de retour de la dernière commande est stockée dans la variable du shell $?, donc tu peux faire :
      1. ps aux | grep [h]ttpd
      2. if [ $? -eq 0 ]; then
      3.     echo online
      4. else
      5.     echo offline
      6. fi


      Éventuellement, tu peux rediriger la sortie de grep vers /dev/null, puisque tu as uniquement besoin de la valeur de retour.
      • Partager sur Facebook
      • Partager sur Twitter
        13 février 2008 à 8:36:59

        Super gouttegd merci beaucoup, je voyais cela un peu + compliquer :p merci ;)

        Edit:
        Par contre il n'y a pas une solution pour que l'on ne voye pas la reponse de :
        ps aux | grep [h]ttpd
        • Partager sur Facebook
        • Partager sur Twitter
          13 février 2008 à 8:53:52

          Si, c'est ce que je disais à la fin de mon message : rediriger la sortie de grep vers /dev/null.
          1. ps aux | grep [h]ttpd > /dev/null

          (Si tu ne connaissais pas le principe des redirections, consulte la page de manuel de bash --- ou tout autre documentation à ta disposition ---, c'est une notion incontournable dans l'utilisation du shell. :) )

          [Edit]C'est c** ce que je viens de dire, tu connaissais forcément (au moins un peu), puisque tu utilisais déjà des tubes... :D [/Edit]

          Autre possibilité, la version GNU de grep (celle normalement utilisée sous GNU/Linux) accepte une option --silent qui supprime toute sortie.
          • Partager sur Facebook
          • Partager sur Twitter
            13 février 2008 à 8:56:30

            Parfait ! Merci beaucoup je vais continuer a apprendre çe language merveilleu
            • Partager sur Facebook
            • Partager sur Twitter

            [Bash] service online/offline

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown