[Bash] Le C(r|)on et les scripts

Le C(r|)on et les scripts [Bash] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 15-02-2007 à 09:56:17    

Bonjour,
 
Voilà, j'ai fait un script chargé de mettre à jour la base de données d'un Squidguard avec une liste récupérée sur Internet par wget.
 
L'ennui, est que le script fonctionne TRES BIEN manuellement, mais quand je le fais lancer par Cron à une heure fixe, rien ne fonctionne comme prévu.
 
On dirait que Cron est incapable d'aller au bout d'un script. J'ai mis des echo vers fichier partout pour définir où il s'arrête (je ne connais pas d'autres méthodes), ce qui a permis de voir qu'il refuse d'executer les commandes de fin, qui fonctionnent pourtant très bien en manuel... :heink:
 
Ceci, après un bon laps de temps (10mn), pour être certain que toutes les opérations soient faites (vu que la reconstruction prend du temps)
 
Le plus surprenant est la méthode de contournement. J'ai réalisé qu'exporter les messages de situation d'une commande (1> 2> ) sur /dev/null ou un fichier, forçait Cron à lancer les commandes qu'il n'avait pas envie de faire :pt1cable:
 
Ma question sera donc simple :
 
C'est quoi ce binz ? Je suis devenu fou ? [:anti] J'ai oublié quelque chose ? :heink:
 
Je met une copie du script à tout hasard ici. C'est une version sans echo mais avec le contournement.
 

Code :
  1. #!/bin/bash
  2. chemintravail="/root"
  3. emplacementdb="/usr/share/squidGuard-1.2.0/db"
  4. httpblacklist="ftp://ftp.univ-tlse1.fr/pub/reseau/cache/squidguard_contrib/blacklists.tar.gz"
  5. nameblacklist="blacklists.tar.gz"
  6. utilisateurdb="squid"
  7. # Stopper le serveur histoire de...
  8. /etc/init.d/squid stop
  9. # Téléchargement de la blacklist Toulouse
  10. wget $httpblacklist -P $chemintravail/
  11. if [ $? -ne 0 ]; then
  12. echo "`date` : Le serveur de la blacklist n'a pas répondu à temps" >> /root/squidguard.log
  13. /etc/init.d/squid start
  14. exit
  15. fi
  16. # Effacement de l'ancienne base
  17. rm -Rf $emplacementdb/blacklists
  18. # Décompression du fichier
  19. tar -xzf $chemintravail/$nameblacklist -C $emplacementdb
  20. if [ $? -ne 0 ]; then
  21. echo "`date` : La décompression de la blacklist a échoué pour une raison inconnue" >> /root/squidguard.log
  22. exit
  23. fi
  24. # Effacement du fichier pour éviter les doublons que fabrique wget
  25. rm -f $chemintravail/$nameblacklist
  26. # Reconstruction de la base de SquidGuard avec la nouvelle blacklist
  27. /usr/bin/squidGuard -c /etc/squid/squidGuard.conf -C all -d $emplacementdb &> /dev/null
  28. if [ $? -ne 0 ]; then
  29. echo "`date` : La recompilation de la base de squidGuard a échoué" >> /root/squidguard.log
  30. exit
  31. fi
  32. # Règlage des droits de /db/ en récursif pour Squid
  33. chown -R $utilisateurdb:$utilisateurdb $emplacementdb
  34. # Redémarrage du serveur Squid
  35. /etc/init.d/squid start &> /dev/null
  36. # Indication dans un fichier externe que la procédure est finie
  37. echo "`date` : La base de SquidGuard à été mise à jour" >> /root/squidguard.log

Reply

Marsh Posté le 15-02-2007 à 09:56:17   

Reply

Marsh Posté le 15-02-2007 à 14:44:27    

Je me demande.... cron il a une variable PATH de définie ? Ya peut-être une différence d'environnement entre lui et toi quand tu tests ton script...


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

Marsh Posté le 15-02-2007 à 15:46:48    

oui.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed