Sintaxis del día de la semana de Crontab

Resuelto Marty Wallace asked hace 11 años • 3 respuestas

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

Veo 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 de su uso 0o 7de forma incorrecta? es decir, ¿seguiría ejecutándose el cron?

Marty Wallace avatar Sep 20 '13 21:09 Marty Wallace
Aceptado

0y 7ambos representan el domingo, puedes usar el que quieras, así escribir 0-6 o 1-7 tiene el mismo resultado.

Además, como sugiere @Henrik, es posible reemplazar los números por nombres abreviados de días, como MON, THUetc.:

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 * * * * * command to be executedsignifica:

minuto hora dia del mes mes día de la semana
(0-59) (0-23) (1-31) (1-12) (1-7)
* * * * * comando a ejecutar

O usando el estilo antiguo:

 ┌────────── 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 por día, puede separar los días con comas, por ejemplo SUN,MON,THUejecutará el comando solo los domingos, los lunes los jueves.

Puede leer más detalles en el artículo de Wikipedia sobre Cron y comprobar una expresión cron en línea con crontab.guru .

fedorqui avatar Sep 20 '2013 14:09 fedorqui
    :-) 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 7están asignados al domingo. También se enumeran los días de la semana abreviados en inglés, que también se pueden utilizar en el crontab.

Ejemplos de uso de números o abreviaturas

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 horas.

En detalle

Utilizar ambos 0y 7para representar el domingo es ventajoso para crear rangos de días laborables [*] que comienzan o terminan con el domingo, como 0-2o 5-7. Los rangos deben comenzar con el número más bajo y terminar con el número más alto. Es importante tener en cuenta que no se pueden utilizar abreviaturas para definir un rango de días de la semana con un guión menos. Por ejemplo, no puedes acortarlo Fri,Sat,Suna Fri-Sun.


[*] En el contexto de un crontab, se utiliza un rango para especificar una secuencia continua de unidades de tiempo, como minutos, horas, días o días de la semana. Los rangos en crontab se representan mediante un guión menos (-) entre los valores del límite inferior y superior. Por ejemplo, un rango de días laborables desde el lunes (1) hasta el miércoles (3) se representaría como 1-3.

Henrik avatar Nov 18 '2014 12:11 Henrik

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

Cyril Bouthors avatar Nov 09 '2014 17:11 Cyril Bouthors