Forum Programmation.shell Bash - Script de vérification d'un processus

Posté par .
Tags : aucun
0
27
sept.
2006
Salut à tous,

J'aimerai crée un petit script qui me permet de checker un processus et qu'au bessoin si ce processus est manquant de la relancer, car j'ai un petit script pour mon squid qui me permet de faire des stats. je vous le mets ici plus bas ( c'est un petit script de débutant)

#! /bin/sh
echo "Killing Squid"
/etc/rc.d/init.d/squid stop
echo "Wait 2 min"
sleep 120
echo "Prostat running ..."
/usr/local/bin/prostat +g/usr/local/prostat/prostat.conf /var/log/squid/access.log 2> /var/log/prostat/dimanche.log
echo "Delete the old archive"
rm -rf /var/log/squid/archives/access.log.gz
echo "Move the old access.log.gz"
mv /var/log/squid/access.log.gz /var/log/squid/archives
echo "Compress the old archive"
/bin/gzip /var/log/squid/access.log
echo "Make a new access.log"
cp -p /var/log/squid/archives/access.log /var/log/squid/
cd /var/log/squid/ & chown -R squid:squid .
echo "Launch Squid"
squid
echo "Finished"


Ce script est programer dans Cron pour se lancer tout les dimanche a 00h

Le prob c'est que des fois le process Squid ne relance pas et j'aimerai evité ce problème. Et crée un script qui checkerai que squid est bien lancer (que je metterai dans cron pour qu'il verifie tous les X temps ) .

#! /bin/sh
echo "vérifié la présence du processus"
ps -aux | grep squid > a

if [ $a =null] then
squid
fi [$a !=null] then
exit


Efin ce code doit etre du n'importe quoi j'ai de grosse lacune en programation, d'ou j'ai du mal à faire des scripts complexe.

Si vous pouvoez me mettre sur la voie, se serais sympas.

Merci :-)
  • # Un truc du genre peut etre...

    Posté par . Évalué à 2.

    Doit yavoir entre 12 et 14 millions d'autres solutions, en voila une :)


    #!/bin/sh
    # non testé :)

    SQUID=`ps --no-headers -o comm= -p \`cat /usr/local/squid/logs/squid.pid\``

    if [ "$SQUID" ne "squid" ];
    # relancer squid
    fi



    le pidfile est pas toujours la, a verifier dans ta configuration, et il faut egalement remplacer "squid" par ce que tu vois dans ton ps quand squid tourne.

    La raison pour laquelle il est peut etre préférable d'utiliser le pidfile par rapport aux ps|grep c'est qu'il pourrait yavoir d'autres process avec "squid" dedans...
  • # As-tu testé ton code ?

    Posté par . Évalué à 1.

    Ton code pour tester le lancement de squid me semble assez bizarre. Est-ce que tu l'as testé ?

    Sinon, pourquoi est-ce que tu relances squid avec juste la commande "squid" alors que tu l'arrêtes avec
    /etc/init.d/squid stop ?
    Il serait préférable de faire pareil pour le lancement :
    /etc/init.d/squid start
    En plus, je pense que cette commande te renverra un code retour différent de 0 s'il y a eu un soucis (code retour que tu retrouves dans la variable $?).

    Enfin, pour tester si un processus contenant "squid" est en cours d'exécution tu peux tester ça :

    ps aux | grep [s]quid >/dev/null 2>&1 || /etc/init.d/squid start

    Mettre des crochets dans le motif de recherche ([s]quid) permet de ne pas retouner le process grep lui même. Le code résultat du grep vaut 0 si au moins une ligne est retournée et est non nul sinon. Les deux pipes (||) indiquent qu'il ne faut exécuter la suite que si le resultat de la commande précédente est non nul (donc si squi n'est pas lancé).

    Est-ce que tout est clair ?
    • [^] # Re: As-tu testé ton code ?

      Posté par . Évalué à 0.

      >> grep [s]quid

      il ne risque pas de trouver le process: quid?

      grep [sS]quid me semble mieux.
      • [^] # Re: As-tu testé ton code ?

        Posté par . Évalué à 1.

        Désolé je me suis trompé plus haut ;)

        Mais j'ai appris qqch!
        Bien vu le [s]quid ça évite de retourner le processus shell grep squid.

        Ex: ps aux|grep bash
        Retournera tous les process ayant 'bash' dans sa ligne d'exécution mais y compris le process 'grep bash'.

        ps aux|grep [b]ash retournera tous les process ayant 'bash' dans sa ligne d'exécution mais pas le grep... :))

Suivre le flux des commentaires

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