Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 20/04/2009, à 10:18

Kestrel

[résolu] Tâches cron.hourly

Bonjour,

J'utilise un Ubuntu Server 8.04 pour héberger plusieurs sites. J'ai un autre script, exécuté tous les jours, qui sauvegarde les bases de données - ceci fonctionne. Ce script est le suivant (situé dans /etc/cron.daily) :

#!/bin/sh

. /root/.bashrc
/home/backup/backup_dbs.php

J'ai besoin pour l'un des sites d'effectuer certaines tâche toutes les heures. Je me suis donc basé sur le fichier précédent, que j'ai copié dans /etc/cron.hourly, et qui contient les commandes suivantes :

#!/bin/sh

. /root/.bashrc
/home/compte/cron/admin_queue.php
/home/compte/cron/rating.php
/home/compte/cron/tag_caching.php

L'un de ces scripts envoie un e-mail. Si je l'exécute manuellement, il fonctionne. Si je laisse le cron tourner, je ne reçois jamais d'email, donc je pense pouvoir dire que le cron ne marche pas. On m'a conseillé de passer le fichier en chown +x mais cela n'a rien changé.

Ma question est la suivante : existe-il un log quelque part qui pourrait m'aider à comprendre d'où vient le problème ? Faut-il prendre des mesures particulières pour activer un script dans les dossier /cron.* ?

Toute aide serait la bienvenue !

Dernière modification par Kestrel (Le 21/04/2009, à 08:36)

Hors ligne

#2 Le 20/04/2009, à 11:05

mickbad

Re : [résolu] Tâches cron.hourly

Hello,

pour voir si un script fonctionne, essayes de créer simplement un fichier avec la date dedans !

#!/bin/sh

# log de fonctionnement
echo $(date) >> /tmp/monlogscript.log

# suite de ton script
...

cela permet effectivement de vérifier si déjà ton script tourne
ensuite, faut voir ce qu'on peut faire ensemble pour résoudre ton problème.

Mick


Somewhere in town

Hors ligne

#3 Le 20/04/2009, à 11:05

wblitz

Re : [résolu] Tâches cron.hourly

quel est le nom exact du script ?
de plus, les scripts CRON sont lancés avec un environnement très restreint, il est donc conseillé d'utiliser uniquement des chemins absolus pour tous les accès au système de fichier réalisé par ton script (et tous les scripts qu'il peut lui-même lancer)


"Un optimiste, c'est un homme qui plante deux glands et qui s'achète un hamac" - Jean de Lattre de Tassigny
Pensez à mettre [RÉSOLU] dans le sujet de vos posts une fois qu'ils le sont...
quelques docs

Hors ligne

#4 Le 20/04/2009, à 14:33

Kestrel

Re : [résolu] Tâches cron.hourly

Très bien, j'ai rajouté un output dans le script comme conseillé par mickbad. Je verrai d'ici une petite demi-heure ce qu'il en est.

Le nom exact du script est "wowbashscripts". Tout est en effet en chemin absolu dans le script, comme indiqué dans le post initial, ainsi que dans les scripts PHP eux-même lancés par le script (les scripts PHP lancés manuellement fonctionnent très bien, je pense donc que les chemins d'accès sont donc OK pour eux).

Hors ligne

#5 Le 20/04/2009, à 15:17

Kestrel

Re : [résolu] Tâches cron.hourly

Comme prévu, le fichier de log n'est pas créé par cron.hourly sad

Voici le contenu exact du fichier /etc/cron.hourly/wowbashscripts

#!/bin/sh

# Log de fonctionnement
echo $(date) >> /home/wowbash/cron/logscript.log

. /root/.bashrc
/home/wowbash/cron/admin_queue.php
/home/wowbash/cron/rating.php
/home/wowbash/cron/tag_caching.php

Comment trouver ce qui bloque l'exécution de cron.hourly?

Hors ligne

#6 Le 20/04/2009, à 15:51

mickbad

Re : [résolu] Tâches cron.hourly

C'est très bizarre effectivement que le fichier log ne soit pas écrit.
Je vais essayer sur ma machine (donc suite après 17h) pour voir ce que ça donne

par contre, tes fichiers php comportent bien l'interpréteur au début du script sinon tu devrais l'exécuter avec

php /home/wowbash/cron/admin_queue.php
...

suite tout à l'heure (si j'y pense big_smile big_smile big_smile) pour voir si mon script a fonctionné wink

Mick

[EDIT 17h04] marrant car j'ai le même phénomène que toi, on a l'impression que le script ne s'exécute pas car mon fichier log ne se remplit pas ... humm on a dû passer à côté de quelque chose wink
à suivre

[EDIT 17h20] tu peux poster ton /etc/crontab pour voir
moi j'ai ça

/etc/cron.hourly# more /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

Donc ça devrait s'exécuter toutes les heures + 17minutes
.. sauf qu'ici aussi ça ne marche pas !!
étrange !

Dernière modification par mickbad (Le 20/04/2009, à 16:20)


Somewhere in town

Hors ligne

#7 Le 20/04/2009, à 16:33

Kestrel

Re : [résolu] Tâches cron.hourly

J'ai le même fichier crontab que toi. La seule différence que je vois c'est que le cron.hourly n'utilise pas la commande "test -x /usr/sbin/anacron", est ce que cela viendrait de là ?

Hors ligne

#8 Le 20/04/2009, à 16:55

wblitz

Re : [résolu] Tâches cron.hourly

et si tu mets ceci dans ton script :

/bin/echo $(/bin/date) >> /home/wowbash/cron/logscript.log

pour les scripts php, il est nécessaire qu'ils commencent par cette ligne (rien d'autre avant) pour être exécuté :

#!/usr/bin/php

"Un optimiste, c'est un homme qui plante deux glands et qui s'achète un hamac" - Jean de Lattre de Tassigny
Pensez à mettre [RÉSOLU] dans le sujet de vos posts une fois qu'ils le sont...
quelques docs

Hors ligne

#9 Le 20/04/2009, à 18:33

mickbad

Re : [résolu] Tâches cron.hourly

wblitz a écrit :

et si tu mets ceci dans ton script :

/bin/echo $(/bin/date) >> /home/wowbash/cron/logscript.log

Je suis d'accord avec toi et je viens de changer le script en conséquence pour voir mais ça ne changera rien à mon avis car dans le début de /etc/crontab on a bien le path qui est défini

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

cela dit, je peux me tromper ! smile

Mick

[EDIT] ben je ne me suis pas trompé

/bin/echo $(/bin/date) ....

ne donne rien, pas d'exécution présumé du script
j'essaye un autre truc pour voir : j'ai mis pour le hourly le test anacron

17 *    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.hourly )

mais ça ne donnera rien à mon avis

Dernière modification par mickbad (Le 20/04/2009, à 19:39)


Somewhere in town

Hors ligne

#10 Le 20/04/2009, à 20:10

wblitz

Re : [résolu] Tâches cron.hourly

est-ce que tu peux afficher la sortie de ceci :

sudo run-parts --test --list --verbose /etc/cron.hourly

"Un optimiste, c'est un homme qui plante deux glands et qui s'achète un hamac" - Jean de Lattre de Tassigny
Pensez à mettre [RÉSOLU] dans le sujet de vos posts une fois qu'ils le sont...
quelques docs

Hors ligne

#11 Le 21/04/2009, à 08:12

mickbad

Re : [résolu] Tâches cron.hourly

/etc/cron.hourly# run-parts --test --list --verbose /etc/cron.hourly
run-parts: --list and --test can not be used together
Try `run-parts --help' for more information.

dommage ça ne marche pas ensemble wink
les options --test et --list mis en séparé ne donne rien en retour de ligne de commande alors que la même commande (--list) avec le répertoire /etc/cron.daily donne bien la liste des scripts qui vont être traités.

bizarre, la liste des scripts dans cron.hourly n'est pas affiché

Mick


Somewhere in town

Hors ligne

#12 Le 21/04/2009, à 08:18

mickbad

Re : [résolu] Tâches cron.hourly

J'ai trouvé la raison : il ne faut pas mettre d'extension dans les scripts qu'on laisse dans les /etc/cron.*/ !!

regardez la trace que j'ai sur la console (c'est sur debain mais ubuntu doit réagir pareil)

:/etc/cron.hourly# ll
total 4
-rwxr-xr-x 1 root root 77 2009-04-20 19:32 01-script.sh
:/etc/cron.hourly# run-parts --list --verbose /etc/cron.hourly/
:/etc/cron.hourly# mv 01-script.sh 01-script
:/etc/cron.hourly# run-parts --list --verbose /etc/cron.hourly/
/etc/cron.hourly//01-script

moralité : mettre le nom du script sans extension ou alors faire un lien symbolique avec un nom sans extension !
cqfd et le pire c'est que c'était visible en étudiant les autres cron.daily, cron.monthly (ce que j'ai fait d'ailleurs smile )


Mick


Somewhere in town

Hors ligne

#13 Le 21/04/2009, à 11:28

wblitz

Re : [résolu] Tâches cron.hourly

J'ai trouvé la raison : il ne faut pas mettre d'extension dans les scripts qu'on laisse dans les /etc/cron.*/ !!

c'est pour cela que je te demandais le nom exact du script dans mon premier post wink
les noms des scripts exécutés via run-parts ne doivent comporter que des caractères alphanumériques (en minuscule), des tirets '-' ou des '_'. ce n'est pas juste une question d'extension wink


"Un optimiste, c'est un homme qui plante deux glands et qui s'achète un hamac" - Jean de Lattre de Tassigny
Pensez à mettre [RÉSOLU] dans le sujet de vos posts une fois qu'ils le sont...
quelques docs

Hors ligne