Aujourd'hui est le 1er novembre 2016 ou en chiffres (non ambigus), 2016-11-01.
J'ai un travail cron utilisateur configuré comme ceci:
# m h dom mon dow command
33 3 1 */2 * /home/user/...
Il est censé s'exécuter tous les deux mois le premier du mois à 3 h 33, quel que soit le jour de la semaine, mais pour une raison quelconque, il a été exécuté aujourd'hui, même si 11 n'est pas divisible par 2.
Est-ce que quelqu'un peut m'expliquer ça? Mon hypothèse de divisibilité par 2 est-elle fausse?
EDIT: J'ai oublié de mentionner, j'utilise la cron
version "3.0pl1-127 + deb8u1" sur une machine Debian 8.6 "Jessie".
Réponses:
Il
/
ne s'agit pas d'une expression arithmétique, mais elle décrit plutôt des «valeurs de pas» sur la plage de valeurs autorisée . Ainsi, puisque les mois commencent toujours par1
au lieu de0
,/2
cela signifierait «prendre toutes les autres valeurs», ce qui donne (1, 3, 5, 7, 9, 11).Ceci est également décrit dans la page de manuel, bien que ce ne soit pas terrible, clair et facile à comprendre:
la source
*/5
? Serait-ce 1,6,11,1,6 ... ou serait-ce 1,6,11,4,9 ...? J'ai supposé que «sur la plage de valeurs autorisée» signifie qu'il n'a pas de mémoire, mais maintenant je n'en étais pas si sûr.crond
prend simplement la liste des valeurs possibles, applique le sélecteur d'étape une fois, puis utilise ces résultats à plusieurs reprises.Aujourd'hui est le premier jour de novembre.
* / 2 signifie que votre cronjob s'exécutera tous les deux mois comme vous le dites.
Ainsi, le mois prochain (décembre), le cronjob ne sera pas exécuté, mais le mois (janvier) suivant.
Le mois avant ce mois (octobre), le cronjob n'a pas été exécuté. Mais en septembre, c'était le cas.
la source
*/2
dans le champ mois est équivalent à1-11/2
, plutôt que2-12/2
. Je ne dis pas que vous vous trompez, mais pouvez-vous produire des pièces justificatives?