DevOps
Generador de expresiones cron
Selecciona un preset o introduce tu expresión cron y obtén una explicación clara, validación de cada campo y un cálculo de las próximas 5 ejecuciones. Todo ocurre en tu navegador: no enviamos la expresión a ningún servidor.
Explicación
Cada 5 minutos.
crontab
# generado por toolsops */5 * * * *
Próximas ejecuciones por timezone
La expresión se evalúa en la timezone elegida. Las ejecuciones se muestran en esa timezone y en UTC.
No se pudieron calcular las próximas ejecuciones. Revisa la expresión y la timezone.
El enlace solo incluye la expresión, la timezone y el número de ejecuciones. No añade parámetros extra ni identificadores.
¿Y en mi runner? Cómo interpreta la timezone cada ejecutor
- En system cron (/etc/crontab), la timezone se hereda del sistema. Para forzarla, define TZ= en la propia crontab antes de la línea de la tarea.
- En Docker, la timezone del contenedor suele ser UTC salvo que pases TZ=Region/Ciudad como variable de entorno o copies /etc/localtime.
- En Kubernetes CronJob, spec.schedule se interpreta según spec.timeZone cuando ese campo está presente (estable en versiones modernas). Si spec.timeZone se omite, el schedule depende de la timezone local del kube-controller-manager, NO de UTC garantizado.
- En GitHub Actions, los cron schedules son siempre UTC, sin opción de configurarlo.
- Cloudflare Scheduled Workers también usa UTC. No hay selector de timezone en wrangler.toml.
Sintaxis
*cualquier valor*/5cada 5 unidades1-5rango (inclusivo)1,3,5lista de valores0-30/10rango con paso
Generador y calculadora de expresiones cron
Una expresión cron es una cadena de cinco campos separados por espacios que describe un horario recurrente: minuto, hora, día del mes, mes y día de la semana. Esta página combina tres operaciones que se buscan a menudo por separado: generar la expresión desde un preset, validar la que escribes a mano y explicar con lenguaje claro lo que va a disparar. Además calcula las próximas cinco ejecuciones en tu zona horaria local.
El término "cron job" suele referirse a la tarea programada en sí (el comando que ejecuta crontab cuando llega el momento); "cron expression" es la cadena que define ese horario. Esta herramienta produce la expresión; el comando posterior depende de tu sistema.
| Expresión | Significado |
|---|---|
*/5 * * * * | Cada 5 minutos. |
0 * * * * | En el minuto 0 de cada hora. |
0 0 * * * | Todos los días a medianoche. |
0 9 * * 1-5 | De lunes a viernes a las 09:00. |
0 0 1 * * | El primer día de cada mes a medianoche. |
0 0 * * 0 | Cada domingo a medianoche (0 también vale 7). |
Generar, validar y explicar son tres operaciones distintas
Cuando alguien busca "cron expression generator", "cron calc" o "cron job generator", suele necesitar una de estas tres cosas. Las cubre todas la misma página:
- Generar: parte de un preset (cada 5 minutos, lunes a viernes a las 09:00, primer día de mes…) y obtén la expresión exacta lista para copiar al crontab.
- Validar: pega una expresión y la herramienta te dice si es sintácticamente correcta y qué campo falla si no lo es.
- Explicar: cualquier expresión válida se traduce a lenguaje natural ("cada 5 minutos", "a las 09:00 de lunes a viernes"), para que verifiques que coincide con tu intención antes de pegarla en producción.
Día del mes y día de la semana: la trampa POSIX
Cuando los dos campos están restringidos simultáneamente (ninguno es '*'), la mayoría de cron Unix/POSIX los combina con OR, no con AND. `0 0 1 * 1` se dispara TANTO el día 1 de cada mes COMO cada lunes, no solo los "lunes que caen en día 1".
Es uno de los matices que más confusión genera. La herramienta lo muestra explícitamente en la explicación cuando detecta el caso y propone alternativas si lo que querías era AND (suele lograrse moviendo la lógica al comando ejecutado).
Esta herramienta vs Quartz, EventBridge y systemd timers
Hay varias variantes de cron en el ecosistema. Esta herramienta cubre el formato Unix/POSIX de 5 campos, el más extendido en servidores Linux y en crontab clásico. Otras variantes (Quartz con 6 o 7 campos incluyendo segundos y año, AWS EventBridge con su propio sabor, systemd OnCalendar con sintaxis distinta) no se procesan aquí; conviene saber qué tienes delante antes de copiar y pegar.
- Si tu expresión empieza con un campo extra de segundos o termina con un año (`0/15 * * * * ?`), es Quartz: usa un parser específico.
- AWS EventBridge admite `?` y campos extra que aquí no se reconocen.
- systemd OnCalendar usa otro lenguaje completamente (`Mon..Fri 09:00`); tiene su propia documentación.
- Esta página avisa cuando una expresión no es 5-campos Unix en lugar de fingir compatibilidad.
Ejemplos
* * * * *Cada minuto*/5 * * * *Cada 5 minutos0 2 * * *Cada día a las 02:000 9 * * 1-5De lunes a viernes a las 09:000 0 1 * *Primer día de cada mes
Preguntas frecuentes
- ¿Qué es una cron expression?
- Es una cadena de cinco campos separados por espacios que describe un horario recurrente para el demonio cron de Unix: minuto, hora, día del mes, mes y día de la semana. Cada campo admite valores concretos (0-59 para minuto, 0-23 para hora, etc.), rangos (1-5), listas (1,15,30) y atajos como `*/5`. Por ejemplo, `*/5 * * * *` significa cada 5 minutos. El cron daemon usa la expresión para decidir cuándo lanzar la tarea asociada.
- ¿Cómo se genera una expresión cron con esta herramienta?
- Tienes dos caminos. Si solo necesitas un horario común (cada 5 minutos, todos los días a medianoche, lunes a viernes a las 09:00...), elige un preset del selector y obtendrás la expresión exacta lista para copiar al crontab. Si necesitas algo a medida, edita los cinco campos manualmente: la herramienta valida cada campo según escribes y muestra una explicación en lenguaje natural y las próximas cinco ejecuciones en tu zona horaria local.
- ¿Qué diferencia hay entre cron expression y cron job?
- Una `cron expression` es la cadena que describe el horario (`0 9 * * 1-5`). Un `cron job` es la tarea programada en sí: la expresión más el comando a ejecutar, registrados en crontab. Cuando alguien habla de un "generador de cron jobs" suele referirse a generar la expresión que define el horario, que es lo que esta herramienta produce. El comando posterior depende de tu sistema (scripts, contenedores, comandos shell) y se añade después en el fichero crontab o en el equivalente de tu plataforma.
- ¿Esta herramienta soporta Quartz o cron con segundos?
- No. Esta versión soporta únicamente cron Unix de 5 campos (minuto, hora, día del mes, mes, día de la semana). Si pegas una expresión con 6 o 7 campos (segundos / año, formato Quartz), la herramienta mostrará un aviso. Para Quartz necesitas un parser específico.
- ¿En qué zona horaria se calculan las próximas ejecuciones?
- En la zona horaria local de tu navegador. Las fechas se obtienen iterando minuto a minuto desde ahora, sin librerías externas y sin enviar nada al servidor. Si despliegas el cron en un servidor remoto, la zona horaria efectiva será la del servidor, no la mostrada aquí.
- ¿Qué significa que el día de la semana acepte 0 y 7?
- Tanto 0 como 7 representan domingo en la mayoría de implementaciones de cron Unix. Internamente la herramienta normaliza 7 a 0 para evitar duplicados.
- ¿Mi expresión cron se envía a algún servidor?
- No. Todo el procesamiento ocurre en tu navegador. No hay llamadas a ningún backend, no se guarda nada en localStorage y al cerrar la pestaña desaparece todo. La expresión que escribes no se envía a un servidor de ToolsOps; aun así, evita pegar datos sensibles en navegadores compartidos o equipos no confiables.
- ¿Por qué la herramienta marca '0 0 31 2 *' como sin próximas ejecuciones?
- 31 de febrero no existe en el calendario, así que ninguna fecha futura puede satisfacer esa combinación. El cálculo se cancela tras un año de iteración sin encontrar coincidencias y se muestra una nota explicativa.
- ¿Puedo combinar día del mes y día de la semana en la misma expresión?
- Sí. Cuando día del mes y día de la semana están AMBOS restringidos (ninguno es '*'), la herramienta aplica la semántica Unix/POSIX: la expresión se dispara si CUALQUIERA de los dos coincide (OR). Por ejemplo, '0 0 1 * 1' se ejecuta tanto el día 1 de cada mes como cada lunes. Si solo uno de los dos campos está restringido, el otro ('*') siempre coincide y la regla se reduce al campo restringido. Como siempre, valida contra el cron real de tu sistema si tu entorno usa una variante (Quartz, cronie, busybox, etc.) con semántica distinta.