Comment cron gère-t-il les restes dans les tâches «de temps en temps»

13

Si je fais ça:

*/9 * * * * /path/to/wotnot

À quelle heure la tâche se déroulera-t-elle dans deux heures, à partir de 09h00

Est-ce A:

09h00
09h09
09h18
09h27
09h36
09h45
09h54
10h03
10h12
10h21
10h30
10h39
10h48
10h57

ou B:

09h00
09h09
09h18
09h27
09h36
09h45
09h54
10h00
10h09
10h18
10h27
10h36
10h45
10h54
Jesse
la source

Réponses:

31

Lorsque vous regardez une plage, vous l'interprétez uniquement dans cette colonne, donc '* / 9' dans la colonne des minutes signifie "lister toutes les minutes, puis sélectionner chaque neuvième valeur". Cette sélection se réinitialise en haut de l'heure, vous redémarrez donc à xx: 00, xx: 09, xx: 18, etc. toutes les heures.

Il peut également être lu comme "toutes les neuf minutes de chaque heure", ce qui implique la réinitialisation en haut de l'heure.

Ainsi, le comportement réel que vous verrez correspond à l'option B.

John
la source
C'est la seule réponse qui semble réellement répondre à la question. Avez-vous essayé cela pour vous en assurer?
gparent
Au cours des 10 dernières minutes? Non. Au cours des trois derniers mois? Oui, mais pas spécifiquement à un intervalle de neuf minutes.
John
Je ne vois pas pourquoi je m'en soucierais quand tu le ferais mais seulement si. Je vous remercie.
gparent
1
J'ai eu des anciens collègues de travail pissy sur "non, vous ne l'avez pas testé, vous comptez sur votre mémoire défectueuse!" dans des situations similaires (bien sûr, 5 minutes plus tard, ils s'éloignent énervés après avoir prouvé que cela fonctionne toujours), j'ai donc pris l'habitude de me protéger contre cela à l'avance.
John
2
La première étape du test consiste à s'assurer que vous avez la même marque et la même version que le client (dans ce cas Jesse). Je ne vois aucun indice jusqu'ici sur le cron qu'il utilise. (C'est probablement Vixie Cron, et cette fonctionnalité de base est probablement stable dans toutes les versions de ce programme.)
Kaz
22

Pour confirmer la réponse de John, */ndans la colonne des minutes signifie "lorsque la minute est 0 mod n". Voici une crontabentrée:

*/7 * * * *  date >> /tmp/foo

et voici la sortie:

Thu Jan 10 14:49:01 GMT 2013
Thu Jan 10 14:56:01 GMT 2013
Thu Jan 10 15:07:01 GMT 2013

Notez que l'écart entre les deux dernières fois n'est pas de sept minutes, car après nn: 56 le prochain */7match correspond à `nn + 1: 07.

Oui, je sais que ces temps sont dans le futur (ou ils l'étaient lorsque j'ai posté cela); J'ai dû faire avancer l'horloge système assez rapidement pour obtenir une réponse rapide.

Chapelier Fou
la source
5
+1 pour l'effort :)
Sven