Generador de expresiones cron
Crea una expresión cron campo a campo, consulta sus próximas ejecuciones en cualquier zona horaria y conviértela a formato systemd, Quartz o AWS.
En lenguaje claro
Están definidos el día del mes y el día de la semana: el cron clásico se ejecuta cuando coincide CUALQUIERA de los dos (no ambos).
Constructor
| Campo | Modo | Valor |
|---|---|---|
| Segundo0–59 | ||
| Minuto0–59 | ||
| Hora0–23 | ||
| Día del mes1–31, L | ||
| Mes1–12 o JAN–DEC | ||
| Día de la semana0–7 (0 y 7 = domingo) o SUN–SAT |
Próximas ejecuciones
Otros formatos
- Línea de crontab
- systemd OnCalendar=
- Quartz / Spring
- AWS EventBridge
Cómo crear una expresión cron
- Escribe o pega una expresión en Expresión cron, o elige una en Plantillas. También se aceptan macros como
@dailyo@weekly. - O usa el Constructor: para cada campo elige un Modo (Todos, Cada N, Valores concretos, Rango o Personalizado) y rellena el Valor. La expresión se actualiza sobre la marcha, y al editar la expresión se actualiza el constructor.
- Marca Añadir un campo de segundos (6 campos) si tu planificador admite segundos.
- Lee el horario en En lenguaje claro y revisa la lista de Próximas ejecuciones. Elige la Zona horaria del servidor que ejecuta la tarea y Cuántas ejecuciones quieres ver.
- Copia la expresión con Copiar o usa uno de los Otros formatos.
La descripción en lenguaje claro del horario se muestra en español (por ejemplo, «A las 09:30, de lunes a viernes»), y las fechas de las próximas ejecuciones, en el formato de tu idioma.
Los errores se explican campo por campo, por ejemplo «Minuto: 61 está fuera de rango (0–59)», para que sepas exactamente qué corregir.
Los cinco campos de cron
Una línea de cron estándar (Vixie) tiene cinco campos y después el comando:
| Campo | Valores permitidos |
|---|---|
| Minuto | 0–59 |
| Hora | 0–23 |
| Día del mes | 1–31 |
| Mes | 1–12 o JAN–DEC |
| Día de la semana | 0–7 (0 y 7 son domingo) o SUN–SAT |
Cada campo acepta * (todos los valores), una lista 1,15, un rango 9-17, un paso */15 (cada 15 unidades) o un rango con paso 0-30/10. Así, */15 9-17 * * 1-5 significa cada 15 minutos de 9:00 a 17:45, de lunes a viernes. Los nombres de meses y días se escriben en inglés (JAN, MON…), como exige cron.
Hay una regla que sorprende a mucha gente: cuando se restringen a la vez el Día del mes y el Día de la semana, el cron clásico se ejecuta cuando coincide cualquiera de los dos. 0 0 13 * 5 se ejecuta todos los días 13 y todos los viernes, no solo los viernes 13. La herramienta muestra un aviso en ese caso.
Próximas ejecuciones y zonas horarias
Cron usa el reloj de la máquina, o la variable CRON_TZ/TZ del crontab. La lista de Próximas ejecuciones se calcula para la zona horaria que elijas, incluidos los cambios de horario de verano: durante el cambio de primavera, una tarea programada a las 2:30 puede saltarse, y en otoño puede ejecutarse una o dos veces según la implementación. Para tareas que deben ejecutarse exactamente una vez, evita las horas entre la 1:00 y las 3:00 o usa UTC.
Vixie cron, temporizadores systemd, Quartz y AWS
- Los temporizadores systemd usan
OnCalendar=con otra sintaxis:Mon..Fri *-*-* 09..17:00/15:00. Las condiciones de día de la semana y de fecha se combinan con Y, no con O, así que algunas expresiones cron no tienen equivalente exacto. - Quartz y Spring ponen primero un campo de segundos y pueden añadir un campo de año. Uno de los dos campos de día debe ser
?, y Quartz numera los días de la semana del 1 al 7 empezando por el domingo, a diferencia del 0–6 de cron. La herramienta escribe los días de la semana por su nombre (MON-FRI) para evitar esa trampa. - AWS EventBridge usa
cron(minutos horas día mes día_semana año): seis campos, sin segundos, un?en uno de los campos de día y un año al final.
El cron estándar no tiene campo de segundos. La forma de 6 campos con segundos la admiten muchas bibliotecas (node-cron, Spring, Quartz), pero no el crontab del sistema.
Preguntas frecuentes
¿Cómo ejecuto una tarea cada 5 minutos?
Usa */5 * * * *. La tarea se ejecuta en los minutos 0, 5, 10… de cada hora.
¿Cómo ejecuto una tarea el último día del mes?
Muchos planificadores aceptan L en el campo del día del mes: 0 18 L * *. Con el cron Vixie básico, ejecútala a diario los días 28 a 31 y comprueba en el script si mañana es día 1.
¿Qué hace @reboot?
Ejecuta el comando una sola vez, cuando arranca el demonio cron. No tiene horario, así que la herramienta no puede mostrar sus ejecuciones.
¿Por qué mi tarea no se ejecuta a la hora indicada?
Revisa la zona horaria del servidor, si usas el crontab del usuario o /etc/crontab (que tiene un campo de usuario adicional) y el PATH: cron arranca con un entorno mínimo.
¿El domingo es 0 o 7?
Ambos. En el campo del día de la semana, 0 y 7 significan domingo, 1 es lunes y 6 es sábado.
Herramientas relacionadas
- Conversor de timestamp Unix Convierte timestamps Unix en segundos o milisegundos a fechas legibles en hora local, UTC e ISO 8601, y pasa cualquier fecha a tiempo epoch.
- Conversor de zonas horarias Convierte una fecha y hora de una zona horaria a varias a la vez, con el horario de verano aplicado automáticamente. Busca cualquier zona IANA o ciudad.
- Calculadora chmod Convierte permisos de archivos Unix entre casillas, notación octal (755) y simbólica (rwxr-xr-x), con setuid, setgid, sticky bit y comandos chmod listos.