Aller au contenu

Sujets conseillés

Posté

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

Posté

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.

Posté

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:

Posté

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

Posté
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/

Posté

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

Posté

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 !

Posté

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

Posté
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

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

Posté

Ok Dan, merci pour l'explication ;)

Je pense avoir compris comment cela fonctionne maintenant :P

Posté

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

Veuillez vous connecter pour commenter

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



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