Cómo usar: Generador de expresiones cron
- Elige un horario común, o usa Crear un horario para elegir la frecuencia, los días de la semana y la hora, y luego haz clic en Usar este horario.
- O pega una expresión existente, como
30 2 * * 1, en el cuadro Expresión cron: la descripción en lenguaje sencillo se actualiza mientras escribes. - Ajusta cada parte por separado en Editar campos (minuto, hora, día del mes, mes y día de la semana).
- Revisa la lista de Próximas ejecuciones en hora local o UTC, y luego copia la expresión en tu crontab, flujo de CI o programador de tareas.
¿Qué es una expresión cron?
Una expresión cron es un horario compacto formado por cinco campos separados por espacios que indica al demonio cron de Unix, y a herramientas basadas en la misma sintaxis como GitHub Actions, GitLab CI, Kubernetes CronJobs, Vercel y muchas colas de tareas, cuándo ejecutar una tarea. Este generador te permite crear una expresión con menús desplegables, explica cualquier expresión en lenguaje sencillo con la biblioteca de código abierto cRonstrue y calcula las próximas ejecuciones para que verifiques un horario antes de que entre en funcionamiento.
Los cinco campos
┌──────── minuto (0–59)
│ ┌────── hora (0–23)
│ │ ┌──── día del mes (1–31)
│ │ │ ┌── mes (1–12, JAN–DEC)
│ │ │ │ ┌ día de la semana (0–6, SUN–SAT)
│ │ │ │ │
* * * * * comando
En el campo de día de la semana, el 7 también significa domingo.
Cada campo acepta * (cualquier valor), un número, un rango 1-5, una lista 1,15,30, un paso */10 o un rango con paso 9-17/2. Algunos programadores (Quartz, Spring, AWS EventBridge) añaden un campo inicial de segundos; marca “Campo de segundos” para trabajar con expresiones de 6 partes.
Ejemplos
| Expresión | Significado |
|---|---|
*/5 * * * * | Cada 5 minutos |
0 * * * * | Al inicio de cada hora |
30 2 * * * | Todos los días a las 02:30 |
0 9 * * 1-5 | A las 09:00 entre semana |
0 0 1 * * | A medianoche el día 1 de cada mes |
0 0 1 */3 * | A medianoche el primer día de cada trimestre |
15 14 1 * * | A las 14:15 el día 1 de cada mes |
Errores comunes
- Día del mes y día de la semana. Si ambos campos están restringidos, el cron clásico ejecuta la tarea cuando coincide cualquiera de los dos.
0 0 13 * 5significa “el día 13 y todos los viernes”, no “el viernes 13”. La lista de próximas ejecuciones sigue esta regla. - Olvidar el minuto.
* 9 * * *se ejecuta 60 veces entre las 09:00 y las 09:59. Usa0 9 * * *para ejecutarla una sola vez. - Zonas horarias. Cron usa la zona horaria del servidor; GitHub Actions y la mayoría de programadores en la nube usan UTC. Cambia la lista de ejecuciones a UTC para compararlas.
- Pasos irregulares.
*/45en el campo de minutos se dispara a :00 y :45, y luego de nuevo a :00: los pasos se reinician cada hora, no se arrastran. - Números de día en Quartz. Quartz cuenta el domingo como 1, mientras que cron de Unix usa 0 (o 7). Esta herramienta usa la numeración de Unix.
Extensiones no estándar
L en el campo de día del mes (último día del mes), 5L (último viernes) y 1#2 (segundo lunes) son compatibles con Quartz y algunas implementaciones de cron, pero no con Vixie cron en Linux. Aquí se explican y se previsualizan, pero comprueba que tu programador los acepte. ¿Necesitas convertir una hora de ejecución a un valor epoch? Prueba el Convertidor de Timestamp Unix o el Convertidor de Zonas Horarias.
Horarios cron más comunes
Expresiones cron listas para usar, con los horarios que más se buscan:
- Cron cada minuto
- Cada 2 minutos
- Cada 5 minutos
- Cada 10 minutos
- Cada 15 minutos
- Cada 20 minutos
- Cada 30 minutos
- Cada hora
- Cada 2 horas
- Cada 3 horas
- Cada 4 horas
- Cada 6 horas
- Cada 12 horas
- Todos los días a medianoche
- Cada día a la 1 am
- Todos los días a las 2 am
- Cada día a las 6 am
- Todos los días a las 9 am
- Cada día a mediodía
- Todos los días a las 6 pm
- Dos veces al día
- Cada día laborable a las 9 am
- Cada fin de semana
- Cada lunes
- Cada viernes a las 5 pm
- Cada domingo
- Cada semana
- Cada hora en horario laboral
- Cada 15 minutos en horario laboral
- Cada mes
- El día 15 de cada mes
- Los días 1 y 15
- Cada trimestre
- Cada 6 meses
- Cada año
- Cron cada 30 segundos
- Último día del mes
- El primer lunes del mes
Preguntas frecuentes
¿Qué significa */15 en cron?
*/15 en el campo de minutos significa cada 15 minutos empezando en 0, es decir, :00, :15, :30 y :45. 5-50/15 daría :05, :20, :35 y :50.¿Cómo ejecuto un trabajo cron cada 30 segundos?
*/30 * * * * *), o añade dos líneas en el crontab, donde la segunda empiece con sleep 30;.¿La hora de cron es UTC o local?
CRON_TZ). GitHub Actions, Kubernetes (por defecto) y la mayoría de programadores en la nube evalúan las expresiones en UTC. La lista de ejecuciones aquí puede mostrar cualquiera de las dos.¿Cuál es la diferencia entre @daily y 0 0 * * *?
@daily (o @midnight) es una abreviatura de 0 0 * * *. Del mismo modo, @hourly = 0 * * * *, @weekly = 0 0 * * 0, @monthly = 0 0 1 * * y @yearly = 0 0 1 1 *.¿Cómo programo un trabajo para el último día del mes?
L si tu programador lo admite (0 0 L * *), o ejecutar diariamente los días 28–31 y comprobar la fecha en el comando: 0 0 28-31 * * [ "$(date -d tomorrow +\%d)" = "01" ] && ./job.sh.¿Por qué mi expresión nunca se ejecuta?
0 0 31 2 * (31 de febrero) o 0 0 31 4 * (31 de abril), nunca coinciden. La lista de próximas ejecuciones muestra una advertencia cuando no encuentra ninguna ejecución en los próximos diez años.