Sintaxis del día de la semana de Crontab
En crontab, ¿el campo Día de la semana va desde 0 - 6
o 1 -7
?
Veo información contradictoria sobre esto. Los estados de Wikipedia 0-6
y otros sitios que he visto son 1-7
.
Además, ¿cuál sería la implicación de su uso 0
o 7
de forma incorrecta? es decir, ¿seguiría ejecutándose el cron?
0
y 7
ambos 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
, 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 * * * * * command to be executed
significa:
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,THU
ejecutará 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 .
:-) 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 0
y 7
está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 0
y 7
para representar el domingo es ventajoso para crear rangos de días laborables [*] que comienzan o terminan con el domingo, como 0-2
o 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,Sun
a 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
.
También puedes usar nombres de días como Mon
lunes, Tue
martes, etc. Es más amigable para los humanos.