Generador de expresiones cron: crea y explica programaciones cron
Crea una programación cron con menús desplegables o pega una, léela en lenguaje claro y ve las 10 próximas ejecuciones en tu zona horaria y en UTC. Gratis, en tu navegador.
minuto · hora · día del mes · mes · día de la semana. Se aceptan nombres (JAN, MON), macros del tipo @daily y una línea de crontab completa pegada.
Usa un rango o un intervalo (1-5); edítalo en el cuadro de la expresión o elige valores abajo para reemplazarlo.
…
Cron interpreta la programación en la zona horaria de la máquina donde se ejecuta. Elige “UTC” para GitHub Actions, Vercel, la mayoría de runners de CI y programadores en la nube; las dos columnas muestran los mismos instantes.
Pega la salida de crontab -l. Se omiten los comentarios y las líneas VAR=valor.
| Se ejecuta cada 5 minutos. /usr/local/bin/healthcheck.sh | |
| A las 02:30. /usr/local/bin/backup.sh --full | |
| A las 09:00, cada día de la semana de lunes a viernes. php /var/www/artisan reports:send | |
| A las 00:00, domingo. certbot renew --quiet |
| Consultar una API o una cola cada 10 minutos | |
| Cada 6 horas (00:00, 06:00, 12:00, 18:00) | |
| Copia de seguridad nocturna a las 02:30 | |
| Cada hora en horario de oficina, días laborables | |
| Cada 30 minutos en horario de oficina | |
| Semanal, domingo a medianoche (igual que @weekly) | |
| Dos veces al mes: los días 1 y 15 a las 08:00 | |
| Últimos días del mes (comprueba en el script que mañana sea día 1) | |
| Ventana de mantenimiento los sábados a las 03:00 | |
| Trimestral, a las 04:15 del día 1 de enero, abril, julio y octubre | |
| Viernes O día 13 (la regla OR en acción) | |
| Macro: una vez al día a medianoche |
Funciona por completo en tu navegador. Nada de lo que introduces se nos envía ni se guarda. Ver todas las herramientas gratis.
¿Encontraste un problema o algo que podría mejorar? Leemos todos los mensajes y lo arreglamos rápido.
Este generador de expresiones cron gratis crea una programación cron de cinco campos con menús desplegables y lee cualquier expresión en lenguaje claro, con las diez próximas ejecuciones en tu zona horaria y en UTC. Pega una expresión, una línea de crontab o un crontab completo y se explica cada programación. Entiende la sintaxis estándar que comparten crontab, GitHub Actions, Kubernetes CronJob, Vercel cron y la mayoría de los programadores de tareas: asteriscos, listas, rangos, pasos, nombres de meses y días de la semana, y las macros como @daily.
La sintaxis de cron es compacta e implacable: “0 0 1 * *” y “0 0 * * 1” se parecen, pero significan el día 1 de cada mes frente a todos los lunes. Ver la programación en palabras y como fechas concretas es la diferencia entre una tarea que se ejecuta a las 9:00 los días laborables y otra que se ejecuta a las 09:00 UTC los domingos, que es el error que esta página existe para evitar. La calculadora sigue exactamente a Vixie cron, incluida su peculiaridad de que un campo de día que empieza por asterisco cambia cómo se combinan los dos campos de día. No acepta la sintaxis de Quartz (un campo de segundos, L, W, #) y te lo indica si la pegas.
Cómo usarla
- Empieza por un valor predefinido o un ejemplo, o escribe o pega una expresión (una línea de crontab completa se recorta a su programación). La descripción y las próximas ejecuciones se actualizan mientras editas.
- Usa los cinco editores de campo para fijar minuto, hora, día del mes, mes y día de la semana: todos, cada N o valores concretos.
- Revisa las diez próximas ejecuciones. Elige “UTC” si la tarea se ejecutará en un servidor o en un runner de CI, que casi siempre usan UTC; cada ejecución se muestra en tu zona horaria y en UTC.
- Para auditar un servidor existente, pega la salida de crontab -l en “Explicar un crontab completo”.
- Copia la expresión o copia una línea de crontab completa con la descripción como comentario.
- Pégala en crontab -e, en un bloque schedule: de GitHub Actions, en la especificación de un CronJob de Kubernetes o en los ajustes de cron de tu plataforma.
Preguntas frecuentes
¿Qué significan los cinco campos?
Por orden: minuto (0–59), hora (0–23), día del mes (1–31), mes (1–12 o JAN–DEC) y día de la semana (0–7 o SUN–SAT, donde tanto 0 como 7 son domingo). Un asterisco significa todos los valores; 1-5 es un rango; 1,15 es una lista; */10 significa cada diez valores.
¿Qué ocurre si se fijan a la vez el día del mes y el día de la semana?
El cron estándar (Vixie) ejecuta la tarea cuando coincide cualquiera de los dos, no ambos. “0 0 13 * FRI” se ejecuta el día 13 de cada mes y todos los viernes, no solo los viernes 13. Esta página sigue esa regla. Un matiz: si cualquiera de los campos de día empieza por asterisco (por ejemplo, */2), Vixie cron lo trata como no restringido y exige que coincidan ambos, así que “0 0 */2 * 1” significa los días impares que son lunes. Quartz es distinto y usa ? para marcar el campo que no se usa.
¿Qué zona horaria usa cron?
La de la máquina o el servicio que lo ejecuta. Los servidores personales suelen usar la hora local; los runners en la nube, GitHub Actions, Vercel y la mayoría de los clústeres de Kubernetes usan UTC. Una tarea fijada a las 9:00 en un runner con UTC se dispara a las 5:00 en Toronto en verano y a las 4:00 en invierno. La tabla de ejecuciones muestra cada hora en tu zona y en UTC, para que el desfase se vea.
¿Admite segundos o las extensiones L, W y #?
No. La sintaxis de seis campos (con segundos) y las extensiones L (último), W (día laborable) y # (n-ésimo día de la semana) son de Quartz y de algunos programadores empresariales, no del cron estándar, y la mayoría de las plataformas las rechazan. Si necesitas “el último viernes del mes”, la solución portable es una tarea que se ejecute todos los viernes y compruebe la fecha por sí misma.
¿Por qué mi tarea nunca se ejecuta?
Causas habituales: la programación es válida pero imposible (31 de abril, 30 de febrero); el servidor está en una zona horaria distinta de la que suponías; la línea de crontab no tiene comando o el PATH del comando difiere del de tu shell; o el intervalo es más corto que la propia duración de la tarea y las instancias se acumulan. La lista de próximas ejecuciones de aquí detecta las dos primeras.
Referencia de la sintaxis de cron
• * todos los valores · 5 exactamente 5 · 1-5 rango · 1,3,5 lista · */15 cada 15 valores · 1-30/5 cada 5 valores del 1 al 30
• Nombres: JAN–DEC para los meses, SUN–SAT para los días de la semana (sin distinguir mayúsculas y minúsculas); los rangos de nombres funcionan (MON-FRI).
• @hourly (0 * * * *), @daily o @midnight (0 0 * * *), @weekly (0 0 * * 0), @monthly (0 0 1 * *), @yearly o @annually (0 0 1 1 *); @reboot se ejecuta una vez al arrancar. Crontab las acepta, pero no todas las plataformas; la forma de cinco campos es la portable.
• Los días de la semana 0 y 7 son ambos domingo. Los rangos no dan la vuelta: FRI-MON es un error; escribe FRI-SAT,SUN-MON o 5,6,0,1.
• Los campos se separan con espacios en blanco; en un crontab, el comando sigue en la misma línea.
Dónde se ponen las programaciones cron
Linux y macOS: crontab -e, una tarea por línea, la expresión y luego el comando. GitHub Actions: on: schedule: - cron: '0 9 * * 1-5', siempre en UTC, y las ejecuciones pueden retrasarse varios minutos en momentos de mucha carga. Kubernetes: el campo schedule de un CronJob. Vercel: crons en vercel.json con una ruta y una programación, en UTC. Los programadores en la nube (AWS EventBridge, Google Cloud Scheduler) aceptan la misma sintaxis con pequeñas diferencias de dialecto, y EventBridge añade un campo de año.
Cómo se calculan las próximas ejecuciones
La calculadora avanza día a día desde ahora. Para cada día comprueba el mes y luego los campos de día del mes y día de la semana con la regla de Vixie (O cuando ambos están restringidos, Y cuando cualquiera de ellos empieza por *), y solo entonces enumera las horas y los minutos que coinciden. Se omiten las ejecuciones que no son estrictamente posteriores al minuto actual, así que una tarea prevista para este mismo minuto se muestra en su siguiente aparición.
En tu propia zona horaria, el horario de verano importa. Una hora que no existe el día en que se adelantan los relojes (las 02:30 en casi toda Norteamérica) se omite, y una hora que se repite cuando se atrasan los relojes se ejecuta una sola vez. Así es como cronie maneja las tareas a hora fija; otros daemons pueden comportarse de otra forma, que es un motivo más por el que los servidores suelen ejecutar cron en UTC.
Una programación que nombra una fecha imposible (30 de febrero, 31 de abril) nunca se dispara, y la página lo indica. Una programación del 29 de febrero solo se dispara en años bisiestos; la búsqueda mira nueve años hacia delante, suficiente para cualquier programación real.
Herramientas gratis relacionadas
- Probador de regex — Prueba una expresión regular con un texto de ejemplo, con resaltado de coincidencias en vivo, grupos de captura y vista previa de reemplazo. Gratis, en tu navegador.
- Formateador JSON — Formatea, minifica y valida JSON, con los errores de análisis localizados por línea y columna. En tu navegador, sin subir nada.
- Conversor de unidades — Convierte entre todas las unidades habituales (métricas e imperiales, de cocina, datos, presión, energía, velocidad, consumo de combustible) al instante, en tu navegador.