Generador de Expresiones Cron

0-59

0-23

1-31

1-12

0-7 (0,7=Domingo)

Siguiente

La sintaxis cron es concisa y fácil de confundir: 0 */6 * * * se ejecuta cada seis horas, mientras que */6 0 * * * se dispara diez veces, solo durante la primera hora después de la medianoche. Este generador te permite elegir un horario visualmente (cada 15 minutos, días de semana a las 9 a.m., el 1 de cada mes) y genera la expresión exacta junto con una descripción en lenguaje natural de lo que significa.

Cómo construir una expresión cron

  1. 1

    Elige un ajuste predefinido o escribe los campos

    Cada minuto, cada hora, a diario a medianoche, cada domingo y el 1 de cada mes están a un clic. Para cualquier otra cosa, escribe los valores directamente en los cinco campos.

  2. 2

    Refina el horario

    Minutos, horas, días del mes, meses, días de la semana específicos. Se admiten rangos (9-17), listas (1,15) y pasos (*/6).

  3. 3

    Lee la expresión

    El generador siempre produce el formato cron estándar de 5 campos, además de una descripción en lenguaje natural del horario.

  4. 4

    Comprueba el dialecto

    Los dialectos difieren (Quartz, AWS EventBridge, Kubernetes). Confirma que la expresión coincide con lo que espera tu programador.

Los cinco campos

*  *  *  *  *
│  │  │  │  │
│  │  │  │  └── Día de la semana (0-6, Domingo=0, o DOM-SAB)
│  │  │  └───── Mes (1-12, o ENE-DIC)
│  │  └──────── Día del mes (1-31)
│  └─────────── Hora (0-23)
└────────────── Minuto (0-59)

Cada campo acepta:

  • Un número específico: 5
  • Una lista: 1,15,30
  • Un rango: 9-17
  • Un paso: */10 (cada 10) o 0-30/5 (cada 5 de 0 a 30)
  • Comodín: * (cada valor)

Expresiones comunes

Horario Expresión cron
Cada minuto * * * * *
Cada 15 minutos */15 * * * *
Cada hora en punto 0 * * * *
Cada 6 horas 0 */6 * * *
Cada día a las 2:30 AM 30 2 * * *
Cada día de semana a las 9 AM 0 9 * * 1-5
Cada lunes a las 8 AM 0 8 * * 1
Primer día de cada mes, 3 AM 0 3 1 * *
Cada 15 minutos, 9-17 días laborables */15 9-17 * * 1-5
Mediodía el 1 y 15 0 12 1,15 * *
Cada domingo a medianoche 0 0 * * 0

La trampa del día del mes + día de la semana

En cron estándar, si se especifican ambos el día del mes y el día de la semana (no *), el trabajo se ejecuta cuando cualquiera coincide (OR, no AND). 0 0 1 * LUN se ejecuta el 1 de cada mes y todos los lunes, no solo cuando el 1 es un lunes.

El cron de Vixie y la mayoría de las distribuciones de Linux siguen esta regla OR. Quartz (Java) y algunos otros usan AND. Cuando tengas dudas, prueba la expresión con una ejecución de prueba o un trabajo de test en tu programador.

Diferencias de dialecto

  • Cron estándar (Linux): 5 campos, día de la semana 0-6 (Domingo = 0 o 7).
  • Quartz (Spring, aplicaciones Java): 6-7 campos, con segundos como campo 1 y año opcional. Día de la semana 1-7 (Domingo = 1).
  • Cron de AWS EventBridge: 6 campos, con año. Día de la semana y día del mes deben ser mutuamente excluyentes (uno debe ser ?).
  • GitHub Actions: cron estándar de 5 campos, intervalo mínimo de 5 minutos, solo UTC.
  • Kubernetes CronJob: cron estándar de 5 campos, UTC por defecto.

Siempre confirma qué dialecto usa tu programador.

Zonas horarias

El cron clásico se ejecuta en la zona horaria local del servidor. Esto puede causar problemas durante las transiciones de horario de verano: un trabajo a las 2:30 AM puede ejecutarse dos veces o no ejecutarse en absoluto en los días de cambio. Los programadores modernos (timers de systemd, Kubernetes, EventBridge) te permiten especificar la zona horaria explícitamente, usa UTC a menos que tengas una buena razón para no hacerlo.

Preguntas frecuentes

Cada 5 unidades del campo, comenzando desde 0. En el campo de minutos */5 se ejecuta en los minutos 0, 5, 10, 15, …, 55. Es una forma abreviada de 0,5,10,15,20,25,30,35,40,45,50,55.

Cron no puede expresar intervalos arbitrarios que no se dividan uniformemente en 60 minutos o 24 horas. Para 90 minutos, lista los tiempos de ejecución específicos: 0 0,9 * * * combinado con líneas adicionales, o cambia a un programador que soporte intervalos arbitrarios (timers de systemd, anacron).

A medianoche. El orden de los campos es minuto-hora, así que 0 0 significa “minuto 0 de la hora 0”. El mediodía sería 0 12 * * *.

El cron estándar lo omite, las ejecuciones perdidas no se reintentan. Anacron captura trabajos diarios/semanales/mensuales perdidos en el siguiente arranque. Los CronJobs de Kubernetes tienen startingDeadlineSeconds y concurrencyPolicy para manejar ventanas perdidas explícitamente.

Herramientas relacionadas