web-dev-qa-db-fra.com

Le jour de la semaine {0-7} dans crontab a 8 options, mais nous n'avons que 7 jours par semaine

Jour de la semaine: plage autorisée de 0 à 7. Le dimanche est 0 ou 7.

J'ai trouvé cela après Google, ma question est pourquoi les deux valeurs (0,7) devraient-elles correspondre au dimanche?

117
Ruban Savvy

C'est une question de portabilité. Dans les premiers Unices, certaines versions de cron acceptaient 0 comme dimanche et certaines acceptaient 7 comme dimanche - ce format est une tentative d'être portable avec les deux. De man 5 crontab in vixie-cron (c'est moi qui souligne):

Lors de la spécification du jour de la semaine, le jour 0 et le jour 7 seront considérés comme dimanche. BSD et AT&T semblent être en désaccord à ce sujet.

132
Chris Down

En plus de l'excellente réponse de @ ChrisDown, cela pourrait également être une solution astucieuse à un problème de localisation : "Selon les calendriers hébreux et les calendriers chrétiens traditionnels, le dimanche est le premier jour de la semaine." Le faire dans les deux sens, ce qui est vraiment facile par programme, le rend facile à utiliser pour l'un ou l'autre groupe.

28
l0b0

Plus simplement, le champ est de 3 bits binaires vous donnant 000 à 111 ou 0 à 7. Il y a donc un total de huit valeurs dans un champ de 3 bits. La valeur supplémentaire est équivalente à la première donc, pour des raisons de commodité, vous pouvez commencer à 0 (dimanche) ou 1 (lundi), incrémenter 6 fois et couvrir une semaine complète.

1
Greg Nolte