Analizador de Cron

Descripción general

El analizador de expresiones cron acepta una expresión cron y muestra una descripción en lenguaje natural, un diagrama ASCII de campos, las próximas 5 ejecuciones y las 5 más recientes en el pasado. Es útil para verificar la lógica de una expresión antes de desplegar una tarea programada y para depurar schedules que no se disparan como se esperaba.

Formato de 5 campos vs. 6 campos

Se admiten dos formatos:

  • 5 campos (minuto hora día mes díaSemana) — sintaxis estándar de crontab de Linux
  • 6+ campos (segundo minuto hora día mes díaSemana) — usado por Spring, Quartz y otros frameworks que necesitan granularidad a nivel de segundos

La herramienta detecta automáticamente el formato según el número de campos.

Caracteres especiales L, # y ?

Estos tres van más allá de los operadores básicos *, ,, -, / y controlan patrones que se repiten mensualmente:

L (Last) — en el campo de día significa el último día del mes; en el campo de día de semana, la última aparición de ese día en el mes:

0 18 L * *       # Último día de cada mes a las 18:00
30 10 * * 5L     # Último viernes de cada mes a las 10:30

# (N-ésima aparición) — solo en el campo de día de semana, formato díaSemana#n, donde 1 = domingo y 7 = sábado:

0 10 ? * 2#3     # 3er martes de cada mes a las 10:00
0 9  ? * 1#1     # 1er domingo de cada mes a las 09:00

? — en el campo de día o día de semana significa "no especificado" — evita ambigüedad cuando el otro campo ya está definido:

30 9 ? * MON-FRI   # Días laborables a las 09:30 (campo día sin especificar)
0 12 15 * ?        # Día 15 de cada mes a las 12:00 (día de semana sin especificar)

Día y día de semana definidos a la vez

Por defecto, cuando se definen tanto el campo de día del mes como el de día de semana (sin usar ? ni *), el motor los trata como OR — la tarea se dispara si se cumple cualquiera de las dos condiciones. Esto es consistente con la mayoría de implementaciones de crontab de Linux. Si estás usando un scheduler diferente, prueba el comportamiento real en ese entorno concreto.

Ejemplos de expresiones habituales

*/5 * * * *        # Cada 5 minutos
0 9 * * 1          # Todos los lunes a las 09:00
0 0 1 * *          # El día 1 de cada mes a medianoche
0 18 L * ?         # Último día de cada mes a las 18:00
0 10 ? * 2#3       # 3er martes de cada mes a las 10:00
15,45 13 ? 6 Tue   # Todos los martes de junio a las 13:15 y 13:45
0-5 13 * * ?       # Cada minuto entre las 13:00 y las 13:05

Zona horaria y el carácter H

El campo de zona horaria acepta nombres IANA como America/New_York o Europe/Madrid. El analizador gestiona las transiciones de horario de verano, por lo que las horas mostradas reflejan el reloj local de esa zona.

H es un marcador de posición aleatorio pero estable usado en algunos sistemas de programación de CI (como Jenkins). Sin una semilla hash, su valor varía entre entornos, por lo que dos máquinas podrían no dispararse al mismo tiempo. En producción, usa un valor explícito cuando necesites tiempos consistentes.