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 duaner . Évalué à 2.
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...
[^] # Re: Un truc du genre peut etre...
Posté par liberforce (site web personnel) . Évalué à 2.
# As-tu testé ton code ?
Posté par JJD . Évalué à 1.
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 cryx . Évalué à 0.
il ne risque pas de trouver le process: quid?
grep [sS]quid me semble mieux.
[^] # Re: As-tu testé ton code ?
Posté par cryx . Évalué à 1.
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... :))
[^] # Re: As-tu testé ton code ?
Posté par gaaaaaAab . Évalué à 1.
http://linuxfr.org/forums/26/17953.html
notament :
http://linuxfr.org/comments/737316.html#737316
vive l'option -C de ps =)
[^] # Ca macrhe tres bien
Posté par Ludovic César . Évalué à 2.
#! /bin/sh
echo "Ckeck Squid process"
if pidof squid ; then
echo "Squid turn"
else
squid
echo "Squid not turn, process launch ..."
fi
Que j'ai ensuite déclaré dans cron pour qu'il se lance toutes les minutes:
* * * * * squid /usr/bin/mon_script
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.