Aller au contenu

Probleme de "Cron"


vespa

Sujets conseillés

Bonjour,

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

J'ai mis dans mon /etc/crontab :

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

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

Dans le fichier load_awstats j'ai mis

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 ??

Lien vers le commentaire
Partager sur d’autres sites

Salut Vespa,

A mon sens le user "root" est de trop dans ta ligne.

*/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.

Lien vers le commentaire
Partager sur d’autres sites

Salut Dan

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

/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:

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:

Lien vers le commentaire
Partager sur d’autres sites

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 ^_^

Lien vers le commentaire
Partager sur d’autres sites

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 :)

Lances:

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

Je trouve le répertoire de perl surprenant :huh: 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/

Lien vers le commentaire
Partager sur d’autres sites

Ok merci pour ta réponse ;)

Donc mon script fonctionne bien lorsque je fais :

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 :

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

Mais cela ne tourne toujours pas :wacko:

Je crois que je vais lacher les crons ce soir et je m'y remettrais demain dans la journée... :)

Lien vers le commentaire
Partager sur d’autres sites

Selon la version de crontab que tu tournes, le */5 peut passer ou coincer.

Remplaces cette ligne par

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 !

Lien vers le commentaire
Partager sur d’autres sites

Merci Dan ;)

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 :

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:

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 ;) )

Lien vers le commentaire
Partager sur d’autres sites

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:

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:

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:

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:

0,10,20,30,40,50  *   *   *   *   /usr/home/scripts/load_awstats >/dev/null 2>&1

pour une mise à jour toutes les 10 minutes.

Dan

Lien vers le commentaire
Partager sur d’autres sites

Au temps pour moi ! j'avais corrigé cela initialement mais j'ai recopié la mauvaise ligne ensuite  :blush:

Cela arrive quand on ne se relit pas ...

T'en fais pas Dan, c'est juste ce qu'on peut appeler une petite cronnerie :lol:

OK, je sors :blush: (pas taper!! :unsure: )

Lien vers le commentaire
Partager sur d’autres sites

Salut Vespa,

On va faire "court" ...

Sous Linux, chaque programme se voit attribuer lors de son ouverture 3 identifiants de fichiers "standards". Ce sont:

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:

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:

commande_xyz > fichier 2>&1

est une forme abbrégée de

commande_xyz 1>fichier 2>fichier

et peut être utilisée parce que les deux destinations sont identiques ;)

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

Dan

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...