Un petit mystère avec Cron

Hello,

Merci d’avancer à toutes les personnes qui prendront un peu de temps sur ce petit mystère.

Le processus cron de ma machine me joue un vilain tour :
1 - Lorsque je positionne un job dans la crontab de root qui doit tourner toutes les minutes, aucun soucis
Copie de crontab -l (sous root) :

# m h  dom mon dow   command
* * * * * df -h > /tmp/df.log 2>&1
#

Copie du syslog :

Jun 27 18:24:01 dreamplug-debian /usr/sbin/cron[1742]: (root) RELOAD (crontabs/root)
Jun 27 18:24:01 dreamplug-debian /USR/SBIN/CRON[3071]: (root) CMD (df -h > /tmp/df.log 2>&1 )
Jun 27 18:25:01 dreamplug-debian /USR/SBIN/CRON[3076]: (root) CMD (df -h > /tmp/df.log 2>&1 )
etc...

2 - Je modifie la planification de la même tache en y fixant l’heure précisément
Copie de crontab -l (sous root)

# m h  dom mon dow   command
27 18 * * * df -h > /tmp/df.log 2>&1
#

Copie du syslog :

Jun 27 18:27:01 dreamplug-debian /usr/sbin/cron[1742]: (root) RELOAD (crontabs/root)

Rien…le job ne se lance pas.

Cron me refuse systématiquement les commandes horodatées précisément
J’avoue que je sèche un peu là.
Le même phénomène se reproduit en passant par la crontab générique (/etc/crontab)
Je n’ai pas plus de logs que ça.

Si quelqu’un a une idée…

Merci.

Bonjour,

[quote=“XIII”]# m h dom mon dow command
27 18 * * * * df -h > /tmp/df.log 2>&1
#[/quote]
Il y a une étoile en trop. Comme ça :

# m h dom mon dow command 27 18 * * * df -h > /tmp/df.log 2>&1 #

Pardon, le copier coller était malheureux
Mais le problème reste entier…

Là, de suite, c’est plus difficile.

Et si tu mets juste un des deux critères (et * pour l’autre) ?

Oui, effectivement,

# m h dom mon dow command
06 * * * * df -h > /tmp/df.log 2>&1
#

OK

# m h dom mon dow command
06 19 * * * df -h > /tmp/df.log 2>&1
#

KO

Une idée qui vaut ce qu’elle vaut, ça serait pas une histoire de timezone ???

?
[code]dpkg -l | grep cron[/code]
?

De mon côté, sur une squeeze64 à jour, cron en version 3.0pl1-116, ceci roule très bien :
[code]7 3 * * * /usr/bin/nice -n 20 php /path/to/script.php[/code]

?

?

De mon côté, sur une squeeze64 à jour, cron en version 3.0pl1-116, ceci roule très bien :

-bash: lsb_release: command not found
dpkg -l | grep cron
ii  cron                            3.0pl1-116                   process scheduling daemon
ii  libasyncns0                     0.3-1.1                      Asyncronous name service query library

Et en ajoutant ‘root’ avant la commande ?
27 18 * * * root df -h > /tmp/df.log 2>&1

Je suis dans le crontab de root, donc pas de besoin d’ajouter d’utilisateur.
Mais j’ai tout de même testé sans succès.

Par ailleurs, dans /etc/crontab avec indication de l’utilisateur, je n’ai
pas plus de succès.

C’est à dire ?

Je suppose que pour tes essais, tu modifies les mn et les heures pour te trouver juste quelques secondes avant ?
Si tu peux modifier l'heure de ta machine et essayer avec < que 12 au lieu du 19 ? (AM/PM ???)

Je suppose que pour tes essais, tu modifies les mn et les heures pour te trouver juste quelques secondes avant ?
Si tu peux modifier l’heure de ta machine et essayer avec < que 12 au lieu du 19 ? (AM/PM ???)

root@dreamplug-debian:/var/log# date 041008002012
Tue Apr 10 08:00:00 CEST 2012
root@dreamplug-debian:/var/log# hwclock --systohc
root@dreamplug-debian:/var/log# date
Tue Apr 10 08:00:17 CEST 2012
Apr 10 08:00:30 dreamplug-debian crontab[3209]: (root) BEGIN EDIT (root)
Apr 10 08:00:38 dreamplug-debian crontab[3209]: (root) REPLACE (root)
Apr 10 08:00:38 dreamplug-debian crontab[3209]: (root) END EDIT (root)
Apr 10 08:01:01 dreamplug-debian /usr/sbin/cron[1742]: (root) RELOAD (crontabs/root)

Nop…

C’est à dire ?[/quote]

Ce que je veux dire, c’est que toi tu penses entrer l’heure de Paris, mais que cron lui pense que c’est l’heure de Moscou.

Si tu laisses passer 24h et que tu regardes les logs, tu seras fixé.

Euh…

Cron n’est pas relatif à l’heure système ?
Si la commande date me donne 8h, comment
peut il trouver une autre heure ? et ou ?
Et dans le positive, comment lui indiquer de se mettre à l’heure du système ?

La piste d’une problème lié à l’heure me parait intéressante, étant
donné que c’est le seul paramètre de la ligne qui plante…

Merci.

[quote=“man cron”]ENVIRONNEMENT
Dans les système Debian, /etc/default/cron peut être configuré pour que les paramètres régionaux du démon cron soient gérés en
utilisant /etc/environment ou /etc/default/locale, les valeurs du dernier étant prioritaires sur celles du premier. Ces fichiers
sont lus et les définitions des variables d’environnement LANG, LC_ALL et LC_CTYPE seront utilisées. Ces variables sont ensuite
utilisées pour configurer l’encodage des messages, « C » par défaut.

   Cela n'affecte pas l'environnement des tâches exécutées par cron. Pour plus de renseignements sur la façon de  modifier  l'envi‐
   ronnement des tâches, veuillez consultez crontab(5).

   Le démon utilisera, si elle existe, la définition du fuseau horaire de /etc/timezone.

   L'environnement  peut être redéfini dans les définitions des crontab des utilisateurs, mais cron ne traitera les tâches que dans
   un seul fuseau horaire.[/quote]
more /etc/environment
root@dreamplug-debian:/var/log# more /etc/default/locale
#  File generated by update-locale
LANG=en_US.UTF-8
root@dreamplug-debian:/var/log# more /etc/timezone
America/New_York
root@dreamplug-debian:/var/log# tzselect
Please identify a location so that time zone rules can be set correctly.
Please select a continent or ocean.
 1) Africa
 2) Americas
 3) Antarctica
 4) Arctic Ocean
 5) Asia
 6) Atlantic Ocean
 7) Australia
 8) Europe
 9) Indian Ocean
10) Pacific Ocean
11) none - I want to specify the time zone using the Posix TZ format.
#? 8
Please select a country.
 1) Aaland Islands        18) Greece                35) Norway
 2) Albania               19) Guernsey              36) Poland
 3) Andorra               20) Hungary               37) Portugal
 4) Austria               21) Ireland               38) Romania
 5) Belarus               22) Isle of Man           39) Russia
 6) Belgium               23) Italy                 40) San Marino
 7) Bosnia & Herzegovina  24) Jersey                41) Serbia
 8) Britain (UK)          25) Latvia                42) Slovakia
 9) Bulgaria              26) Liechtenstein         43) Slovenia
10) Croatia               27) Lithuania             44) Spain
11) Czech Republic        28) Luxembourg            45) Sweden
12) Denmark               29) Macedonia             46) Switzerland
13) Estonia               30) Malta                 47) Turkey
14) Finland               31) Moldova               48) Ukraine
15) France                32) Monaco                49) Vatican City
16) Germany               33) Montenegro
17) Gibraltar             34) Netherlands
#? 15

The following information has been given:

        France

Therefore TZ='Europe/Paris' will be used.
Local time is now:      Tue Apr 10 09:06:16 CEST 2012.
Universal Time is now:  Tue Apr 10 07:06:16 UTC 2012.
Is the above information OK?
1) Yes
2) No
#? 1

You can make this change permanent for yourself by appending the line
        TZ='Europe/Paris'; export TZ
to the file '.profile' in your home directory; then log out and log in again.

Here is that TZ value again, this time on standard output so that you
can use the /usr/bin/tzselect command in shell scripts:
Europe/Paris
root@dreamplug-debian:/var/log# date
Tue Apr 10 09:06:26 CEST 2012
root@dreamplug-debian:/var/log# crontab -e
crontab: installing new crontab
root@dreamplug-debian:/var/log# crontab -l
# m h  dom mon dow   command
12 09 * * * df -h > /tmp/df.log 2>&1
#
Apr 10 09:12:01 dreamplug-debian /usr/sbin/cron[1742]: (root) RELOAD (crontabs/root)

Je rate encore quelque chose ?

En essayant de me régler sur son heure UTC

root@dreamplug-debian:/var/log# crontab -l
# m h  dom mon dow   command
15 07 * * * df -h > /tmp/df.log 2>&1
#

rien dans le syslog…

[quote=“XIII”] root@dreamplug-debian:/var/log# more /etc/timezone America/New_York[/quote]

Donc ton cron est à l’heure de New York.

Y’a bon.

/etc/default/cron

#READ_ENV="yes"
/etc/init.d/cron restart

:wink:

Merci.