SomeeLab.tools

Lector de expresiones cron

Desglosa una expresión cron en sus cinco campos y muestra cuándo se ejecutará de verdad. Lee la sintaxis estándar y atajos como @daily.

Minuto
0
Hora
9
Día del mes
Cualquiera
Mes
Cualquiera
Día de la semana
lun-vie

Qué significa cada uno de los cinco campos

De izquierda a derecha: minuto, hora, día del mes, mes y día de la semana. Así, 0 9 * * 1 quiere decir minuto 0, hora 9, sin restricción de fecha ni de mes, y lunes: todos los lunes a las nueve de la mañana.

El asterisco indica que el campo no tiene restricción. Dejar abierto un campo de los primeros hace que la tarea se ejecute mucho más de lo previsto: * * * * * se dispara cada minuto. Un asterisco olvidado en el campo del minuto son 1440 ejecuciones al día.

Cómo se leen los símbolos

  • 1-5 es la serie de valores del 1 al 5.
  • 1,3,5 son solo esos tres valores.
  • */15 avanza de quince en quince desde cero. En el campo del minuto da 0, 15, 30 y 45.
  • 9-17/2 solo salta dentro del intervalo indicado.
  • Los días y los meses admiten nombres: MON-FRI, JAN,JUL.

En el campo del día de la semana, 0 es domingo y 6 es sábado. Casi todas las implementaciones aceptan además 7 como domingo, de modo que 0 y 7 apuntan al mismo día.

Cuando se usan el día del mes y el día de la semana a la vez

Aquí es donde más gente tropieza. Si el tercer campo y el quinto están los dos restringidos, cron se ejecuta los días que cumplen cualquiera de las dos condiciones, no los que cumplen ambas.

0 0 1 * MON no es “el día uno cuando cae en lunes”. Es el día uno del mes o todos los lunes, lo que salen unas cinco veces al mes. Restringe uno de los dos campos y deja el otro como asterisco para no caer en esto.

Comprueba antes la zona horaria

Las horas que aparecen aquí siguen la zona del dispositivo desde el que lo consultas. El cron de un servidor sigue la zona de ese servidor, así que confirma cuál es antes de desplegar. Hay muchos servidores en UTC, y una tarea pensada para las nueve de la mañana acaba corriendo a media tarde.

Donde hay cambio de hora estacional, una tarea situada en la franja que se mueve puede saltarse o repetirse el día del cambio. Evitar la franja de las dos de la madrugada resuelve el asunto.

Seis campos es otro dialecto

Algunas expresiones llevan delante un campo de segundos y suman seis. Esa es la convención de Spring y Quartz, y no es lo que lee un crontab estándar. Esta herramienta solo lee cinco campos.

Pegar una expresión de seis campos en un crontab desplaza todo una posición: el valor de los segundos se lee como minutos y el de los minutos como horas. Aclara qué sintaxis espera el destino antes de copiar nada.