Constructor de expresiones Cron
ConversiónConstruye, valida y explica expresiones cron. Calcula el próximo disparo (UTC).
- Próxima ejecución (UTC)
- —
- Copiar
- —
En esta página
¿Qué es una expresión cron?#
Una expresión cron es una programación compacta escrita como cinco campos separados por espacios: minuto, hora, día del mes, mes, día de la semana. Una línea como 0 9 * * 1-5 se lee de izquierda a derecha como «en el minuto 0, hora 9, todos los días del mes, todos los meses, en los días del 1 al 5 (lunes a viernes)»; es decir, a las 09:00 de los días laborables. Cada * significa «todos los valores de este campo», de modo que cuantos más campos fijes, más específica será la programación, y cuantos más dejes como *, con mayor frecuencia se disparará.
Cron es el lenguaje nativo de programación del crontab de Linux, GitHub Actions, CronJob de Kubernetes, la mayoría de sistemas de CI e innumerables planificadores de tareas. Escribirla bien es la mitad de la batalla; la otra mitad es la particularidad del día del mes / día de la semana (consulta las preguntas frecuentes más abajo), que hace tropezar incluso a ingenieros experimentados. Esta página analiza tus cinco campos a medida que escribes, marca el campo exacto que tiene un error de sintaxis o de rango y calcula la próxima ejecución para que confirmes que la programación se dispara cuando tú crees que lo hace.
Cómo se usa#
- Edita la caja Expresión de la parte superior. Arranca con
* * * * *(cada minuto). - Debajo hay cinco desplegables, uno por campo (minuto, hora, día del mes, mes, día de la semana). Cada uno ofrece los fragmentos habituales de ese campo (
*,*/5,0,1-5,0,6…); al elegir uno, se coloca en la posición correspondiente de la expresión, lo que resulta práctico cuando no recuerdas si*/15va en la casilla de los minutos. - La fila de Plantillas rellena programaciones completas listas para empezar con un solo clic: cada minuto, cada hora, diaria, semanal, mensual, anual o días laborables.
- El panel de salida muestra la Próxima ejecución (el primer instante, en o después de la hora actual, que coincide) y una línea de estado que confirma un análisis válido o señala el campo conflictivo. Pulsa
now()para recalcular respecto al momento actual.
Características clave#
- Gramática completa de cinco campos. Admite
*, listas separadas por comas (0,15,30,45), rangos (1-5), pasos (*/15,9-17/2) y nombres de mes/día (JAN-DEC,SUN-SAT, sin distinguir mayúsculas).7se acepta para el domingo y se normaliza a0. - Lógica correcta del día del mes / día de la semana. Implementa la regla estándar de Vixie cron: cuando ambos campos están restringidos, la tarea se dispara si cualquiera coincide (OR lógico); cuando solo uno está restringido, ambos deben cumplirse (AND). Muchos calculadores ingenuos fallan aquí.
- Errores precisos por campo. Un rango incorrecto o una letra suelta se notifican indicando el campo exacto responsable (
minuto,hora…), no un genérico «expresión no válida». - Próxima ejecución basada en UTC. El próximo disparo se calcula sobre los componentes UTC del instante, así que el resultado es determinista independientemente de dónde se cargue la página, y luego se muestra como una fecha normal que puedes copiar.
- Detección de inalcanzabilidad. Una expresión que nunca pueda coincidir (por ejemplo, un día del mes que ningún mes contiene) se detecta en lugar de entrar en bucle indefinido.
Ejemplo práctico#
Escribe 0 9 * * 1-5 para la reunión diaria de los días laborables. Campo a campo: minuto 0, hora 9, día del mes *, mes *, día de la semana 1-5. De los campos de fecha (*) y de día de la semana (1-5), solo este último está restringido —la fecha es un comodín—, así que aplica la rama AND: disparar a las 09:00 en los días de lunes a viernes. La Próxima ejecución muestra el próximo instante de un día laborable a las 09:00 UTC.
Ahora compara 0 0 1 * 1, es decir, «minuto 0, hora 0, el día 1 del mes, todos los meses, lunes». Aquí tanto el día del mes (1) como el día de la semana (1) están restringidos, así que cron toma la rama OR: la tarea se dispara el día 1 de cada mes y todos los lunes, no «los lunes que caen en día 1», que es la interpretación errónea casi universal. El panel Próxima ejecución hace visible la diferencia: verás que salta al lunes más cercano incluso cuando ese lunes no sea el día 1.
Preguntas frecuentes#
¿Por qué mi tarea se dispara en días que no esperaba?#
Casi siempre por la interacción entre el día del mes y el día de la semana. El cron estándar los trata como un OR cuando ambos están fijados: 0 0 1 * 1 significa «el día 1, o cualquier lunes», no «el día 1 solo si es lunes». Si quieres una tarea que se ejecute únicamente cuando el día 1 caiga en lunes, el propio cron no puede expresarlo: programas el día 1 y añades dentro del script una comprobación del día de la semana.
¿Qué significan */5 y 9-17/2?#
*/5 en el campo de los minutos significa «empezando en 0, cada 5 valores» → 0, 5, 10, 15, …, 55. 9-17/2 significa «dentro del rango de 9 a 17, cada 2 valores» → 9, 11, 13, 15, 17, útil para «cada dos horas durante el horario laboral». El divisor que va tras / se aplica a cualquier rango o comodín que lo preceda.
¿El domingo es 0 o 7?#
Ambas cosas. El campo del día de la semana acepta 0 y 7 para el domingo (cron históricamente usaba 0; algunos sistemas añadieron 7). Esta herramienta admite ambos y normaliza 7 a 0. También funcionan los nombres: SUN, Mon, fri son todos equivalentes sin distinguir mayúsculas.
La expresión se analiza, pero la Próxima ejecución parece muy lejana. ¿Está mal?#
Probablemente no: normalmente significa que la programación realmente no puede dispararse pronto. 0 0 29 2 * (29 de febrero) es válida, pero solo coincide en años bisiestos, así que la próxima ejecución puede estar a años vista. La herramienta limita la búsqueda a aproximadamente ocho años; una expresión que no pueda coincidir dentro de esa ventana se notifica como inalcanzable en lugar de colgar la página.