Version complète: sur le forum Webmaster Hub : Probleme de "Cron"
Webmaster Hub > Informatique & Internet > PC-Gyver > Linux, freebsd
vespa
Bonjour,

Je viens de me lancer pour faire un cron suite à la lecture de quelques tuto...

J'ai mis dans mon /etc/crontab :

CODE
*/5 *   *   *   *   root    /usr/home/scripts/load_awstats


le script n'a pas l'air de tourner...

Dans le fichier load_awstats j'ai mis

CODE
perl /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=www.monsite.info -update


et cela n'a pas l'air de tourner...

Avez vous une idée ??
Dan
Salut Vespa,

A mon sens le user "root" est de trop dans ta ligne.
CODE
*/5 *   *   *   *     /usr/home/scripts/load_awstats

Comment as-tu édité le crontab ?

Il faut faire, en tant que root, "crontab -e" pour que le cron soit réactivé une fois le crontab édité.

Et pour le fichier load_awstats , il faut mettre le chemin complet vers perl, le plus souvent /usr/bin/perl ou /usr/local/bin/perl.
Une commande "whereis perl" te dira où il est.

Dan

PS: crontab -e a de fortes chances de lancer "vi"... tu peux aussi envoyer le signal HUP au process crond.
vespa
Salut Dan

Pour le chemin vers le perl ta commande à fonctionnée alors j'ai mis dans mon script :

CODE
/usr/src/contrib/file/Magdir/perl  /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=www.nomdusite.ndd-update
/usr/src/contrib/file/Magdir/perl  /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -www.nomdusite.ndd -update


Effectivement j'éditais /etc/crontab avec VI, mais je n'arrives pas à l'éditer avec la commande crontab -e wacko.gif

Alors en suivant la procédure indiquée sur ce site j'ai copié le fichier /etc/crontab dans le répertoire /var/cron/tabs "L'utilitaire cron consulte également le répertoire /var/cron/tabs, à la recherche de nouveaux fichiers crontab"

Et la je vais attendre 5 minutes pour voir si cela fonctionne huh.gif
vespa
PS avec quelle commande je peux lancer mon script :

/usr/home/scripts/load_awstats afin de voir déja s'il fonctionne ??

Merci d'avance ^_^
vespa
Bouu ca fonctionne pas blink.gif
Dan
CITATION(vespa @ lundi 30 mai 2005, 20h12)
PS avec quelle commande je peux lancer mon script :

/usr/home/scripts/load_awstats afin de voir déja s'il fonctionne ??

Merci d'avance ^_^
*

Tout simplement avec perl smile.gif

Lances:
CODE
perl  /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=www.nomdusite.ndd-update


Je trouve le répertoire de perl surprenant huh.gif Parce que mettre un exécutable dans /usr/src/contrib n'est pas vraiment la norme.
C'est supposé contenir des sources, pas des programmes compilés.

A mon sens il doit se trouver dans /usr/bin ou /usr/local/bin ... pas ailleurs.

Idem pour crontab, l'exécutable doit se trouver dans /usr/bin/
vespa
Ok merci pour ta réponse wink.gif

Donc mon script fonctionne bien lorsque je fais :

CODE
perl  /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=www.nomdusite.ndd-update


la commande crontab -e fonctionne finalement...
Elle m'a créé un fichier ou j'ai ajouté ma ligne :

CODE
*/5 *   *   *   *   root    /usr/home/scripts/load_awstats


Mais cela ne tourne toujours pas wacko.gif

Je crois que je vais lacher les crons ce soir et je m'y remettrais demain dans la journée... smile.gif
Dan
Selon la version de crontab que tu tournes, le */5 peut passer ou coincer.
Remplaces cette ligne par
CODE
0,5,10,15,20,25,30,35,40,45,50,55  *   *   *   *   root    /usr/home/scripts/load_awstats

en éditant avec la commande "crontab -e"

Cela DOIT fonctionner !
vespa
Merci Dan wink.gif

CITATION(Dan @ lundi 30 mai 2005, 22h26)
CODE
0,5,10,15,20,25,30,35,40,45,50,55  *   *   *   *   root    /usr/home/scripts/load_awstats

en éditant avec la commande "crontab -e"

Cela DOIT fonctionner !


J'ai essayé et cela ne fonctionnait pas malheureusement et j'ai remplacé par :

CODE
15,55  *   *   *   *   /usr/home/scripts/load_awstats >/dev/null


en supprimant le "root" comme tu m'avais dit et cela fonctionne maintenant...

faut que je regarde ce soir si c'est uniquement grace à la suppression de root ou bien si c'est grace à l'ajout de >/dev/null ... car la j'ai fait de la simple copie sans trop bien comprendre pourquoi... blush.gif

Maintenant j'ai trouvé sur le site Awstats un script pour générer les stats dans un fichier html et maintenant il ne me reste plus qu'a réussir à me les envoyer par email...(j'y arrivais sous windows donc ce soir je vais essayer de le faire sous bsd wink.gif )
destroyedlolo
Tu devrais aussi verifier que ton utilisateur soit autoriser a lancer des cron (man cron est ton ami).
Dan
CITATION(vespa @ mardi 31 mai 2005, 09h21)
faut que je regarde ce soir si c'est uniquement grace à la suppression de root ou bien si c'est grace à l'ajout de >/dev/null ... car la j'ai fait de la simple copie sans trop bien comprendre pourquoi... blush.gif
*

Cherches pas ! C'est à cause de la suppression de root.
Au temps pour moi ! j'avais corrigé cela initialement mais j'ai recopié la mauvaise ligne ensuite blush.gif
Cela arrive quand on ne se relit pas ...

La redirection > /dev/null permet d'éviter que l'utilisateur (root sans doute) ne reçoive des emails avec la sortie standard du crond.
Elle devrait être complétée avec 2>&1 pour rediriger les erreurs elles aussi.

La ligne qui DOIT marcher est donc:
CODE
0,5,10,15,20,25,30,35,40,45,50,55  *   *   *   *   /usr/home/scripts/load_awstats >/dev/null 2>&1


Cela te fera une mise à jour toutes les 5 minutes... remplaces la première partie si tu veux un autre délai, par exemple:
CODE
0,10,20,30,40,50  *   *   *   *   /usr/home/scripts/load_awstats >/dev/null 2>&1
pour une mise à jour toutes les 10 minutes.

Dan
Eclipsis
CITATION(Dan @ mardi 31 mai 2005, 19h41)
Au temps pour moi ! j'avais corrigé cela initialement mais j'ai recopié la mauvaise ligne ensuite  blush.gif
Cela arrive quand on ne se relit pas ...
T'en fais pas Dan, c'est juste ce qu'on peut appeler une petite cronnerie laugh.gif
OK, je sors blush.gif (pas taper!! unsure.gif )
vespa
Ok Dan, merci pour l'explication wink.gif

Je pense avoir compris comment cela fonctionne maintenant tongue.gif
Dan
Salut Vespa,

On va faire "court" ...

Sous Linux, chaque programme se voit attribuer lors de son ouverture 3 identifiants de fichiers "standards". Ce sont:
CITATION
0 - stdin (standard input = entrée standard = le clavier par exemple)
1 - stdout (standard output = sortie standard = l'écran ou la fenêtre)
2 - stderr (standard error = erreur standard = par défaut le même que stdout, soit l'écran)


Lorsque tu fais une redirection en sortie, tu rediriges uniquement 1 (stdout) par défaut. Le descriptif stderr est dans ce cas non redirigé.

Cela permet par exemple d'avoir l'info utile dans un fichier, et les erreurs à l'écran)

Si tu veux rediriger l'erreur standard, il faut le mentionner. Par exemple:
CODE
commande_xyz 1>fichier.log 2>erreur.log

permet d'avoir la sortie redirigée vers "fichier.log" et les erreurs éventuelles vers "erreur.log"

La notation:
CODE
commande_xyz > fichier 2>&1

est une forme abbrégée de
CODE
commande_xyz 1>fichier 2>fichier

et peut être utilisée parce que les deux destinations sont identiques wink.gif

J'avais dit "court" ? OK j'arrête !

Dan
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.