vespa Posté 30 Mai 2005 Posté 30 Mai 2005 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 ??
Dan Posté 30 Mai 2005 Posté 30 Mai 2005 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.
vespa Posté 30 Mai 2005 Auteur Posté 30 Mai 2005 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 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
vespa Posté 30 Mai 2005 Auteur Posté 30 Mai 2005 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
Dan Posté 30 Mai 2005 Posté 30 Mai 2005 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 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 Posté 30 Mai 2005 Auteur Posté 30 Mai 2005 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 Je crois que je vais lacher les crons ce soir et je m'y remettrais demain dans la journée...
Dan Posté 30 Mai 2005 Posté 30 Mai 2005 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 !
vespa Posté 31 Mai 2005 Auteur Posté 31 Mai 2005 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... 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 )
destroyedlolo Posté 31 Mai 2005 Posté 31 Mai 2005 Tu devrais aussi verifier que ton utilisateur soit autoriser a lancer des cron (man cron est ton ami).
Dan Posté 31 Mai 2005 Posté 31 Mai 2005 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... 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 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
Eclipsis Posté 31 Mai 2005 Posté 31 Mai 2005 Au temps pour moi ! j'avais corrigé cela initialement mais j'ai recopié la mauvaise ligne ensuite Cela arrive quand on ne se relit pas ... T'en fais pas Dan, c'est juste ce qu'on peut appeler une petite cronnerie OK, je sors (pas taper!! )
vespa Posté 1 Juin 2005 Auteur Posté 1 Juin 2005 Ok Dan, merci pour l'explication Je pense avoir compris comment cela fonctionne maintenant
Dan Posté 1 Juin 2005 Posté 1 Juin 2005 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
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant