Generador de expresiones cron: crea, explica y ve las próximas ejecuciones | We.Inc
Crea un horario cron con menús desplegables o pega uno para leerlo en lenguaje claro. Mira las 10 próximas ejecuciones en tu zona horaria y cópialo para crontab, GitHub Actions, Vercel o Kubernetes.
Generador de expresiones cron
Una expresión cron son cinco campos separados por espacios: minuto, hora, día del mes, mes y día de la semana. */5 * * * * se ejecuta cada cinco minutos; 0 9 * * 1-5 se ejecuta a las 9:00 de lunes a viernes. Crea una con los menús desplegables o pega la tuya para ver su explicación y sus diez próximas ejecuciones.
Los cinco campos, en orden
Campo
Valores permitidos
Minuto
Hora
Día del mes
Mes
1-12 o JAN-DEC
Día de la semana
0-7 o SUN-SAT (0 y 7 son domingo)
Elige los valores campo por campo o pega una expresión. La herramienta la explica en lenguaje claro, señala los errores, lista las diez próximas ejecuciones en cualquier zona horaria y te da el mismo horario listo para crontab, GitHub Actions, Vercel y Kubernetes.
Escribe o pega una expresión en el cuadro, o haz clic en uno de los ajustes predefinidos. Los atajos como @daily y @weekly también funcionan.
O usa el generador: cada uno de los cinco campos ofrece cada valor, cada N, valores concretos o un rango. La expresión se actualiza mientras eliges.
Lee la línea en lenguaje claro para comprobar que el horario dice lo que querías. Los errores, como un minuto 61 o un campo que falta, se indican por su nombre.
Elige una zona horaria para ver las diez próximas ejecuciones tal como ocurrirían allí, incluidos los cambios por el horario de verano.
Copia el horario en el formato que espera tu plataforma. Todo se ejecuta en tu navegador.
La mayoría de los programadores alojados, incluidos GitHub Actions y los cron jobs de Vercel, leen el horario en UTC. Convierte tu hora local antes de guardarlo, o la tarea se ejecutará horas antes o después.
Si rellenas los campos de día del mes y día de la semana, cron ejecuta la tarea cuando coincide cualquiera de los dos, no cuando coinciden ambos. 0 0 13 * 5 se ejecuta cada día 13 y cada viernes, no solo los viernes 13.
Elige un minuto impar como 17 3 * * * en lugar de 0 0 * * *. Muchísimas tareas están programadas en punto, así que los servicios compartidos y los runners alojados están más ocupados en ese momento.
Las tareas programadas entre las 01:00 y las 03:00 hora local pueden saltarse o ejecutarse dos veces cuando cambia la hora. Programa las tareas críticas en UTC o fuera de esa franja.
GitHub Actions no ejecuta horarios con más frecuencia que cada 5 minutos y puede iniciarlos con retraso cuando sus runners están ocupados, así que no confíes en una puntualidad exacta allí.
Preguntas frecuentes
¿Cómo escribo un cron job que se ejecute cada 5 minutos?
Usa */5 * * * *. El */5 en el campo de minuto significa cada quinto minuto empezando en 0, así que se ejecuta a :00, :05, :10 y así sucesivamente. Para cada 10 o 15 minutos, cambia el número a 10 o 15.
¿Qué significa */ en cron?
La barra define un paso. */15 en el campo de minuto significa cada 15 minutos de la hora: 0, 15, 30 y 45. También puedes recorrer un rango por pasos: 9-17/2 en el campo de hora significa 9, 11, 13, 15 y 17.
¿El domingo es 0 o 7 en cron?
Las dos cosas. El cron estándar acepta 0 y 7 para el domingo, y luego del 1 para el lunes al 6 para el sábado. Los nombres de día como SUN y MON evitan la duda por completo.
¿Por qué mi expresión tiene seis o siete campos?
Quartz, Spring y algunos programadores en la nube añaden un campo de segundos al principio y a veces un año al final. El crontab estándar, GitHub Actions, Vercel y Kubernetes usan cinco campos. Esta herramienta lee la forma de cinco campos; quita el campo de segundos para comprobar el resto.
¿Qué zona horaria usa cron?
Un crontab usa la zona horaria del servidor en el que se ejecuta, salvo que el sistema admita un ajuste CRON_TZ o TZ. GitHub Actions y Vercel usan UTC. Los CronJobs de Kubernetes usan la zona horaria del controlador salvo que definas el campo timeZone en el spec.
Cómo leer una expresión cron
Lee los campos de izquierda a derecha: en este minuto, de esta hora, en este día del mes, en este mes, en este día de la semana. Un asterisco significa cualquier valor. Así, 30 6 * * 1 se lee: en el minuto 30 de la hora 6, cualquier día del mes, cualquier mes, en lunes. Es decir, a las 06:30 cada lunes.
Cada campo puede contener un único valor, una lista (1,15), un rango (1-5), un paso (*/10) o una mezcla (0-30/10,45). El generador de esta página los escribe por ti, y la línea de descripción te lee el resultado para que puedas comprobarlo.
La trampa del día del mes y el día de la semana
Cuando los dos campos de día tienen un valor distinto del asterisco, cron los trata como alternativas. Una tarea configurada como 0 0 1 * 1 se ejecuta el día uno de cada mes y todos los lunes. Eso sorprende a mucha gente que esperaba el primer lunes del mes.
Cron no puede expresar directamente el primer lunes. La solución habitual es programar 0 0 1-7 * * y hacer que el script termine si el día no es lunes, o usar un programador con su propia sintaxis para ello.
Dónde se ejecutará tu horario
Todas las plataformas de abajo usan los mismos cinco campos, pero los envuelven de forma distinta y algunas añaden reglas propias. Copia desde la herramienta el fragmento para la tuya y luego revisa su documentación para ver los límites de frecuencia de las tareas en tu plan.
Cada 5 minutos
Cada 15 minutos
Cada hora, en punto
Cada 6 horas
Cada día a medianoche
De lunes a viernes a las 9:00
Los viernes a las 17:30
Los domingos a las 3:00
El primer día de cada mes
El primer día de cada trimestre a las 8:00
Cada 10 minutos en horario de oficina
Una vez al año, el 1 de enero
Qué significa cada carácter en un campo cron
Símbolo
Significado
Ejemplo
Se lee como
Cualquier valor
* en el campo de hora
Cada hora
Una lista de valores
1,15 en el campo de día
Los días 1 y 15
Un rango
1-5 en el campo de día de la semana
De lunes a viernes
Un paso dentro de un rango
*/10 en el campo de minuto
Minutos 0, 10, 20, 30, 40, 50
JAN-DEC
Nombres de los meses (mayúsculas o minúsculas)
De junio a agosto
SUN-SAT
Nombres de los días; 0 y 7 son ambos domingo
sat,sun
Fines de semana
@daily
Atajo de 0 0 * * *
@hourly, @weekly, @monthly, @yearly
Igual que la forma de cinco campos
Minuto
Hora
Día del mes
Mes
Día de la semana
Ene
Mar
Abr
May
Jun
Jul
Ago
Sep
Oct
Nov
Dom
Lun
Mar
Mié
Jue
Vie
Sáb
Modo de {field}
Cada
Cada N
Concretos
Rango
Paso de {field}
Valores de {field}, separados por comas
{field} desde
{field} hasta
Tu horario
Expresión cron
Copiar expresión
Créala campo por campo
Cambiar cualquier campo de abajo sustituye la expresión de arriba.
Próximas 10 ejecuciones
Zona horaria
Cargando tu reloj…
No hay ninguna ejecución en los próximos cinco años. Revisa los campos de día y mes, por ejemplo un 31 en un mes que tiene 30 días.
Corrige la expresión para ver las horas de ejecución.
Se ejecuta con menos de 5 minutos de diferencia. GitHub Actions no programa con esta frecuencia.
Copia para tu plataforma
Copiar fragmento
Añade la línea con crontab -e. Se ejecuta en la zona horaria del servidor; sustituye el comando por el tuyo.
Va en un archivo de workflow dentro de .github/workflows. GitHub lee el horario en UTC.
Vercel lee el horario en UTC y envía una petición GET a la ruta que indiques.
El campo timeZone define en qué zona se lee el horario. Sustituye la imagen y el comando por los de tu tarea.