PK Systems PK Systems
Herramientas para devs

Generador y Explicador de Cron

Construye expresiones cron campo por campo, o pega una existente para obtener la explicación en español y los próximos cinco horarios de ejecución.

Generador y Explicador de Cron

Expresión cron

* * * * *

Ajusta cualquier campo de arriba para ver la expresión actualizar.

¿Qué es una expresión cron?

Una expresión cron es una agenda de cinco campos usada por programadores estilo Unix, sistemas de CI, CronJob de Kubernetes, AWS EventBridge, GitHub Actions y la mayoría de los runners modernos de tareas. Cada campo controla una unidad de tiempo — minuto, hora, día del mes, mes y día de la semana — y soporta cuatro abreviaciones: * (cualquiera), una lista separada por coma (0,15,30,45), un rango (1-5) y un paso (*/10). Combínalas y describes casi cualquier agenda recurrente sin escribir un calendario a mano.

Cómo usar este generador

Elige un preset para un punto de partida instantáneo, o construye la expresión campo por campo. Cada campo tiene cuatro modos: Todos emite *; Lista específica recibe valores separados por coma; Rango recibe un par inicio–fin; Paso recibe un intervalo (*/N) con offset opcional. La expresión y la descripción en español se actualizan en vivo. Para el camino inverso, suelta una cadena cron en la caja de parsing — la herramienta la decodifica a forma legible y muestra los próximos cinco horarios en tu zona local.

Referencia de campos

Minuto: 0–59. Hora: 0–23. Día del mes: 1–31. Mes: 1–12 (enero = 1). Día de la semana: 0–6 con domingo = 0 en cron Unix clásico — 7 también se acepta como domingo en la mayoría de parsers modernos. Cuando día del mes y día de la semana están ambos con valores distintos a *, el cron clásico dispara en CUALQUIERA de las condiciones (un OR lógico), lo que sorprende a muchos. Elige uno u otro para comportamiento predecible.

Preguntas frecuentes

¿Funciona con Quartz / Spring cron?
No — este generador emite cron Unix clásico de 5 campos. Quartz y Spring usan una variante de 6 o 7 campos con un campo de segundos al inicio y un campo opcional de año al final. La estructura es similar, así que normalmente puedes pegar esta salida y prefijar 0 para volverlo Quartz, pero tokens especiales como L (último) y W (día hábil) son exclusivos de Quartz y no aparecen aquí.
¿Cómo calcula el explicador las próximas ejecuciones?
Cuando haces clic en Explicar, la herramienta recorre la expresión y muestra los próximos cinco horarios en los que se disparará, renderizados en la zona local de tu navegador. Todo el cálculo es local — tus cadenas cron nunca salen de la página.
¿Y los husos horarios?
El generador y la previsualización de próximas ejecuciones tratan la expresión como si corriera en la zona local de tu navegador. Programadores en producción varían: Linux crond usa la zona del sistema, AWS EventBridge usa UTC por defecto, GitHub Actions usa UTC, Kubernetes usa la zona del cluster. Confirma siempre la zona de tu runner antes de desplegar.
¿Cómo expreso "último día del mes"?
El cron Unix clásico no tiene un token nativo de "último día", así que la aproximación portable más cercana es 59 23 28-31 * *, que dispara cada día desde el 28 a las 23:59. El propio job debe verificar si date -d 'tomorrow' +%-d = 1 (o el equivalente en tu lenguaje) y abortar si no es fin de mes. Quartz cron tiene L para esto — pero Quartz no corre en cron Linux puro.
¿Puedo correr cada 90 minutos?
No con una sola expresión cron — los pasos de cron se reinician cada hora, así que */90 no funciona. La solución más cercana es dos expresiones: 0 0,3,6,9,12,15,18,21 * * * y 30 1,4,7,10,13,16,19,22 * * *, que juntas disparan cada 90 minutos. Más simple aún: programa cada 30 minutos y haz exit 0 en el script cuando no sea el slot correcto.
¿Por qué mi job dispara dos veces en el cambio de horario?
Cuando el reloj adelanta, los jobs en la hora saltada normalmente se omiten. Cuando atrasa, los jobs en la hora repetida corren dos veces. Para evitar, corre cron en UTC (cron.timezone = 'UTC' o TZ=UTC en el crontab) y convierte a hora local dentro del job — UTC no tiene horario de verano.