Syntaxe du jour de la semaine Crontab

204

Dans crontab, le champ Jour de la semaine va-t-il de 0 - 6ou 1 -7?

Je vois des informations contradictoires à ce sujet. les états de wikipedia 0-6et d'autres sites que j'ai vus le sont 1-7.

Quelle serait également l'implication ou utiliser 0ou 7incorrectement? c'est-à-dire que le cron fonctionnerait toujours?

Marty Wallace
la source

Réponses:

373

0et les 7deux représentent le dimanche, vous pouvez utiliser celui que vous voulez, donc écrire 0-6 ou 1-7 a le même résultat.

En outre, comme l'a suggéré @Henrik, il est possible de remplacer les numéros par nom raccourci de jours, tels que MON, THU, etc:

0 - Sun      Sunday
1 - Mon      Monday
2 - Tue      Tuesday
3 - Wed      Wednesday
4 - Thu      Thursday
5 - Fri      Friday
6 - Sat      Saturday
7 - Sun      Sunday

Graphiquement:

 ┌────────── minute (0 - 59)
 │ ┌──────── hour (0 - 23)
 │ │ ┌────── day of month (1 - 31)
 │ │ │ ┌──── month (1 - 12)
 │ │ │ │ ┌── day of week (0 - 6 => Sunday - Saturday, or
 │ │ │ │ │                1 - 7 => Monday - Sunday)
 ↓ ↓ ↓ ↓ ↓
 * * * * * command to be executed

Enfin, si vous souhaitez spécifier jour par jour, vous pouvez séparer les jours par des virgules, par exemple SUN,MON,THU, vous n'exécuterez la commande que le dimanche, le lundi le jeudi.

Vous pouvez lire plus de détails dans l'article de Wikipedia sur Cron .

fedorqui 'SO arrête de nuire'
la source
4
ok c'est ce que je ne savais pas dimanche peut être un 0 ou 7. merci
Marty Wallace
15
Sachez que vous ne pouvez pas faire Sat-Sun6-7Sat,Sun
:,
Pouvez-vous confirmer que cela n'est pas sensible à la casse? Vous passez plusieurs fois entre SUN, Sun, Sundaydans votre réponse
MichaelChirico
1
@MichaelChirico oh, bon point. Vérification de l'article de Wikipédia sur Cron J'ai lu Les abréviations du mois et du jour de la semaine ne sont pas sensibles à la casse .
fedorqui 'SO arrête de nuire'
104
    :-) Sunday    |    0  ->  Sun
                  |  
        Monday    |    1  ->  Mon
       Tuesday    |    2  ->  Tue
     Wednesday    |    3  ->  Wed
      Thursday    |    4  ->  Thu
        Friday    |    5  ->  Fri
      Saturday    |    6  ->  Sat
                  |  
    :-) Sunday    |    7  ->  Sun

Comme vous pouvez le voir ci-dessus, et comme indiqué précédemment, les numéros 0et 7sont tous deux attribués au dimanche. Il y a aussi les jours abrégés anglais de la semaine répertoriés, qui peuvent également être utilisés dans la crontab.

Exemples d'utilisation des nombres ou des abréviations

15 09 * * 5,6,0             command
15 09 * * 5,6,7             command
15 09 * * 5-7               command
15 09 * * Fri,Sat,Sun       command

Les quatre exemples font tout de même et exécutent une commande tous les vendredis, samedis et dimanches à 9h15.

En détail

Avoir deux nombres 0et 7pour le dimanche peut être utile pour écrire des plages de jours de semaine commençant par 0ou se terminant par 7. Vous pouvez donc écrire des plages commençant par dimanche ou se terminant par lui, comme 0-2ou 5-7par exemple (les plages doivent commencer par le nombre inférieur et se terminer par le plus élevé). Les abréviations ne peuvent pas être utilisées pour définir une plage de jours de semaine.

Henrik
la source
1
Pour plus de clarté, «Les abréviations ne peuvent pas être utilisées pour définir une plage de jours de semaine». La déclaration ici semble être une façon de dire que l'on ne peut pas séparer les abréviations par des traits d'union moins, seulement des virgules. En d'autres termes, Fri,Sat,Sunne peut pas être raccourci Fri-Sun.
Patrick Dark
8

Vous pouvez également utiliser des noms de jour comme Monpour lundi, Tuepour mardi, etc. C'est plus convivial pour l'homme.

Cyril Bouthors
la source
Cela ne fonctionnera pas pour certaines distributions; en testant avec Ubuntu 14.04.3 LTS, j'ai obtenu "/tmp/crontab.Nuq9GE/crontab":24: mauvais jour de la semaine"
0x4B1D
3
@Nikita vérifie les fautes de frappe ou les espaces supplémentaires. J'ai à la fois un "Mon-Fri" et un "Thu" dans ma crontab sur Ubuntu 14.04.3 et les deux fonctionnent très bien. Je soupçonne que s'il y a un espace entre l'un des personnages, vous vous retrouveriez avec une erreur.
Dale Anderson