Crontab Sintaxis del día de la semana

204

En crontab, ¿se ejecuta el campo Día de la semana desde 0 - 6o 1 -7?

Estoy viendo información contradictoria sobre esto. Los estados de Wikipedia 0-6y otros sitios que he visto son 1-7.

Además, ¿cuál sería la implicación o el uso 0o 7incorrectamente? es decir, ¿se seguiría ejecutando el cron?

Marty Wallace
fuente

Respuestas:

373

0y 7ambos representan el domingo, puede usar el que desee, por lo que escribir 0-6 o 1-7 tiene el mismo resultado.

Además, según lo sugerido por @Henrik, es posible sustituir los números por el nombre abreviado del día, tales como 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

Gráficamente:

 ┌────────── 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

Finalmente, si desea especificar día a día, puede separar los días con comas, por ejemplo SUN,MON,THU, ejecutará el comando solo los domingos, los lunes los jueves.

Puede leer más detalles en el artículo de Wikipedia sobre Cron .

fedorqui 'así que deja de dañar'
fuente
44
ok eso es lo que no me di cuenta el domingo puede ser un 0 o 7. gracias
Marty Wallace
15
Tenga en cuenta que no puede hacer: Sat-Sunsolo 6-7oSat,Sun
pkowalczyk
¿Puedes confirmar que esto no distingue entre mayúsculas y minúsculas? Se cambia varias veces entre SUN, Sun, Sundayen su respuesta
MichaelChirico
1
@MichaelChirico oh, buen punto. Revisando el artículo de Wikipedia sobre Cron que leí Las abreviaturas de mes y día de la semana no distinguen entre mayúsculas y minúsculas .
fedorqui 'así que deja de dañar' el
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

Como puede ver arriba, y como se dijo antes, los números 0y 7ambos están asignados al domingo. También se enumeran los días abreviados de la semana en inglés, que también se pueden usar en el crontab.

Ejemplos de uso de número o abreviatura

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

Los cuatro ejemplos hacen lo mismo y ejecutan un comando todos los viernes, sábados y domingos a las 9.15 en punto.

En detalle

Tener dos números 0y 7para el domingo puede ser útil para escribir rangos entre semana que comienzan 0o terminan con 7. Por lo tanto, puede escribir rangos comenzando con el domingo o terminando con él, como 0-2o 5-7por ejemplo (los rangos deben comenzar con el número más bajo y deben terminar con el más alto). Las abreviaturas no se pueden usar para definir un rango entre semana.

Henrik
fuente
1
Para mayor claridad, "Las abreviaturas no se pueden utilizar para definir un rango de día de la semana". La declaración aquí parece ser una forma de decir que no se pueden separar las abreviaturas por guiones menos caracteres, solo comas. En otras palabras, Fri,Sat,Sunno se puede acortar a Fri-Sun.
Patrick Dark
8

También puede usar nombres de días como Monlunes, Tuemartes, etc. Es más amigable para los humanos.

Cyril Bouthors
fuente
Esto no funcionará para algunas distribuciones; probando con Ubuntu 14.04.3 LTS, obtuve "/tmp/crontab.Nuq9GE/crontab":24: mal día de la semana"
0x4B1D
3
@Nikita busca errores tipográficos o espacios adicionales. Tengo un "Lun-Vie" y un "Jue" en mi crontab en Ubuntu 14.04.3 y ambos funcionan bien. Sospecho que si hay un espacio entre cualquiera de los personajes, terminarías con un error.
Dale Anderson