Generador de expresiones cron:
¿cuándo se ejecutará?
Elige una frecuencia y una hora. El constructor escribe la expresión de cinco campos, la traduce a una frase clara y enumera las próximas diez fechas en que se ejecutará — así compruebas la programación antes de que llegue al crontab, no después de la ejecución de las 03:30.
Cómo leer 30 3 * * 1-5
Toda expresión cron responde a las mismas cinco preguntas, de izquierda a derecha — aquí, sobre una programación real.
Léelo como una frase: de lunes a viernes, a las 03:30. 30 3 * * 1-5
Mira la programación antes de que cron la ejecute
La mayoría de las expresiones cron se prueban por primera vez con la ejecución de las 03:30 en producción. Este generador traslada esa prueba a tu navegador:
- Preguntas estructuradas, no suposiciones. Frecuencia, día, hora — cada ambigüedad de la frase en lenguaje natural se convierte en un control explícito.
- Las próximas diez ejecuciones, calculadas. Un analizador real recorre el calendario para que leas la programación como fechas, no como sintaxis.
- Salida POSIX portable. Cinco campos, solo números — funciona en cualquier crontab, de Alpine a AIX. Los símbolos exóticos quedan señalados, no generados.
Una expresión cron, campo a campo
*/15 9-17 * * 1-5Qué significan *, */5 y @daily
Cinco funcionan en cualquier crontab. El sexto es exclusivo de Quartz y no se instalará.
Coincide con todo — el valor por defecto, y el más ruidoso. En el campo de los minutos significa sesenta ejecuciones por hora, que es de donde sale el típico ticket de «¿por qué esto se ha ejecutado 60 veces?».
Un paso — cada 5.º valor. Los pasos no se propagan entre campos: */90 en el campo de los minutos se convierte, sin avisar, en «a :00» — una cadencia de 90 minutos necesita dos líneas.
Un rango — de lunes a viernes en el campo del día de la semana, 9–17 en el campo de la hora. Se puede combinar con una lista: 1-5,0 son los días laborables más el domingo.
Una lista — valores exactos, separados por comas. La forma portable de decir «dos veces por hora» o «enero, abril, julio, octubre».
Apodos — @hourly @daily @weekly @reboot. Cómodos donde están soportados, pero @reboot se dispara cuando arranca el daemon de cron, que no siempre coincide con un reinicio de la máquina.
Esto no es cron. # L W ? pertenecen a Quartz — Jenkins, Spring, algunas herramientas de CI. Pégalos en un crontab y la línea no se instalará.
Programaciones cron ya hechas
Todas son POSIX válido. Para los casos menos habituales, como «cada 2 de marzo a las 5:30 de la tarde», consulta nuestra biblioteca de ejemplos de cron.
Trampas habituales de cron
Las dos se calculan en vivo, en tu navegador — sin ida y vuelta al servidor.
Preguntas frecuentes sobre expresiones cron
Convierte una programación que puedes describir en palabras, como «cada día laborable a las nueve», en la expresión de cinco campos que lee el cron: 0 9 * * 1-5. Esta herramienta va más allá: traduce la expresión a una frase y calcula sus próximas diez ejecuciones, para que compruebes la programación como fechas. También señala las dos trampas clásicas: la regla OR del campo de día y el error de poner un asterisco donde iba un cero.
De izquierda a derecha: minuto (0–59), hora (0–23), día del mes (1–31), mes (1–12) y día de la semana (0–7, donde 0 y 7 significan ambos domingo). Cada campo admite un número, una lista (0,30), un rango (1-5), un paso (*/15) o * para «cualquiera». Algunos planificadores añaden un sexto campo para los segundos (Quartz, Spring) — un crontab no lo acepta.
No en una sola línea — los pasos no arrastran el resto entre campos, así que */90 en el campo de los minutos solo significa «a :00». La solución son dos líneas de crontab que se intercalan: 0 0-21/3 * * * (00:00, 03:00, 06:00…) más 30 1-22/3 * * * (01:30, 04:30, 07:30…) — juntas, cada 90 minutos. El mismo truco sirve para cualquier cadencia que no divida a 60.
Porque el campo de los minutos era *. * 3 * * * significa «cada minuto en que la hora sea 3» — de 03:00 a 03:59, sesenta ejecuciones. Lo que querías escribir era 0 3 * * *. Es el error clásico de cron, y la razón por la que esta herramienta siempre escribe un minuto explícito salvo que elijas literalmente «cada minuto».
Cron se dispara cuando cualquiera de los dos coincide — es una unión, no una intersección. Está en la especificación POSIX, y sorprende a mucha gente. Toma 0 9 1-7 * 1, un intento natural de decir «el primer lunes del mes». Se ejecuta los días 1–7 y todos los lunes: 10 u 11 mañanas al mes en lugar de una. La vista de la trampa en esta página calcula las dos lecturas en paralelo y muestra el arreglo portable.
La hora local del servidor — cron no tiene ningún campo de zona horaria. Si la máquina va en UTC (como la mayoría de las imágenes cloud), las 09:00 del crontab son las 09:00 UTC. Algunas variantes de cron (cronie en RHEL/Fedora, FreeBSD) respetan una línea CRON_TZ=; el vixie-cron clásico de Debian no. Y vigila el horario de verano si el servidor va en una zona local: en las noches de cambio, las 02:30 pueden ocurrir dos veces — o ninguna. Programar fuera de la franja 01:00–03:00, o mantener los servidores en UTC, evita el problema por completo.
Cron registra que ha iniciado la tarea; nada de serie te dice que ha ido bien. Tres capas: redirige la salida a un log (>> /var/log/job.log 2>&1), configura MAILTO= con una dirección que alguien lea de verdad y añade luego una comprobación independiente sobre el resultado. La tercera capa funciona siempre que el resultado sea visible desde fuera: una página regenerada, un certificado renovado, un sitemap. La vista de fallos silenciosos de esta página recorre todo el modo de fallo.
Sigue explorando
Herramientas gratis, solo el principio.
Uptimia cuida tus sitios.
Disponibilidad, SSL, caducidad de dominio, velocidad de carga, transacciones — monitorizados desde 171+ ubicaciones en todo el mundo. 30 días gratis.