Expresiones cron explicadas, con ejemplos y trampas
Una expresión cron son cinco campos que dicen cuándo ejecutar algo. Se lee fácil cuando sabes el orden; lo que sorprende son unas pocas reglas, como qué ocurre si fijas a la vez un día del mes y un día de la semana. La sintaxis, ejemplos para copiar y las trampas más habituales.
Los cinco campos
Una línea de cron estándar tiene cinco campos de tiempo, seguidos del comando. Según la página de manual crontab(5), los campos y sus valores permitidos son:
| Posición | Campo | Valores permitidos |
|---|---|---|
| 1 | minuto | 0–59 |
| 2 | hora | 0–23 |
| 3 | día del mes | 1–31 |
| 4 | mes | 1–12 (o nombres) |
| 5 | día de la semana | 0–7 (0 y 7 son domingo, o nombres) |
El comando se ejecuta cuando el minuto, la hora y el mes coinciden con la hora actual y se cumple la condición del día (más abajo). Cron examina sus entradas cada minuto, así que la unidad más pequeña es el minuto: esta sintaxis no tiene campo de segundos.
Los caracteres especiales
*significa «todos los valores» («de la primera a la última»).,forma una lista:1,15es el día 1 y el 15.-forma un rango inclusivo:8-11en el campo de la hora son las 8, 9, 10 y 11./añade un paso a un rango o a*:*/5es cada 5 unidades, y0-23/2en las horas es una de cada dos.
Para los meses y los días de la semana se pueden usar nombres (las tres primeras letras, en mayúsculas o minúsculas: jan, mon…). La página crontab(5) admite también rangos y listas de nombres como mon,wed,fri, pero algunas implementaciones antiguas no, así que los números son la opción segura.
Ejemplos para copiar
| Expresión | Se ejecuta |
|---|---|
*/15 * * * * | cada 15 minutos (a los :00, :15, :30 y :45) |
0 * * * * | al comienzo de cada hora |
0 9 * * 1-5 | a las 09:00, de lunes a viernes |
0 9-17 * * * | cada hora en punto de 09:00 a 17:00, ambas incluidas |
0 */2 * * * | cada dos horas en punto (00:00, 02:00 … 22:00) |
5 4 * * 0 | a las 04:05 todos los domingos |
0 0 1 * * | a medianoche el día 1 de cada mes |
0 0 1 1 * | a medianoche el 1 de enero |
Para saber qué significa en realidad una expresión que has heredado, pégala en el explicador de expresiones cron: la traduce a lenguaje normal y muestra las próximas ejecuciones, que es la forma más rápida de detectar una expresión que no hace lo que creías.
Trampa 1: día del mes y día de la semana son «o», no «y»
Esta pilla a casi todo el mundo. Si restringes los dos campos, el del día del mes y el del día de la semana (ninguno es *), el comando se ejecuta cuando coincida cualquiera de los dos. La página crontab(5) da un ejemplo: 30 4 1,15 * 5 se ejecuta a las 04:30 los días 1 y 15 de cada mes y además todos los viernes, no solo los viernes que caigan en 1 o 15. Si quieres «el primer viernes del mes», cron no puede expresarlo directamente: prográmalo para todos los viernes y haz que el script compruebe que el día es 7 o menos.
Trampa 2: los pasos se reinician, no «arrastran»
*/7 en el campo de los minutos significa los minutos 0, 7, 14 … 56, y vuelve a empezar en 0 en la hora siguiente, así que entre el 56 y el 0 solo hay 4 minutos. Un paso solo da un intervalo uniforme cuando divide el rango exactamente: */5, */10, */15 y */30 lo hacen con los minutos; */7 no. El manual lo ilustra con las horas: los pasos se evalúan dentro del propio campo, de modo que */23 en las horas significa la hora 0 y la 23 de cada día, no «cada 23 horas».
Trampa 3: «el último día del mes» no existe
Los meses tienen de 28 a 31 días y cron estándar no tiene un símbolo de «último día». La solución habitual es ejecutar a diario (0 0 * * *) y hacer que el comando compruebe si mañana es día 1 antes de trabajar. Y recuerda que, en un crontab, un % sin escapar dentro del comando se convierte en un salto de línea, así que un date +%d hay que escribirlo date +\%d.
Trampa 4: zonas horarias y horario de verano
Cron usa la hora local del sistema salvo que se le diga otra cosa (algunas implementaciones aceptan una variable CRON_TZ). Importa en las noches de cambio de hora. El manual de crontab(5) lo dice sin rodeos: las horas inexistentes, como la «hora que falta» en la conversión al horario de verano, nunca coinciden, así que los trabajos programados en esa hora no se ejecutan, y las horas que ocurren más de una vez hacen que los trabajos que coinciden se ejecuten dos veces. Pon los trabajos importantes fuera de la franja de 01:00 a 03:00, o deja la máquina en UTC. Para saber cuándo cambia la hora en España, mira la guía del cambio de hora en España, y usa el conversor de zonas horarias para pasar una programación a la hora del servidor.
Trampa 5: no todos los planificadores hablan el mismo dialecto
La forma de cinco campos de arriba es la clásica de Unix. Otros sistemas difieren. GitHub Actions usa la sintaxis cron POSIX con cinco campos, ejecuta los flujos programados en UTC por defecto (se puede indicar opcionalmente una zona horaria IANA), los lanza sobre el último commit de la rama por defecto y no admite un intervalo menor de cada 5 minutos. Otros, como los planificadores tipo Quartz, añaden un campo de segundos (y a veces uno de año), con lo que cada posición se desplaza una. Comprueba siempre qué dialecto usa tu herramienta antes de copiar una expresión de otro sitio.
Una lista corta antes de dar por buena una programación
- Léela en palabras, o usa el explicador, y revisa las cinco próximas ejecuciones.
- Si fijas a la vez día del mes y día de la semana, confirma que quieres de verdad el «o».
- Evita
* * * * *salvo que necesites de verdad cada minuto. - Decide la zona horaria a propósito y aleja los trabajos de la hora del cambio de horario.
- Haz que el trabajo sea seguro de ejecutar dos veces, porque tarde o temprano ocurrirá.
Fuentes y más información
- man7.org: crontab(5), formato del archivo de tabla de cron
- GitHub Docs: evento schedule y sintaxis cron POSIX en los flujos de trabajo
Datos comprobados el 3 de octubre de 2026.
Hazlo ahora, gratis y en tu navegador. Tus archivos no se suben.
Crea una programación cron y mira qué significa y cuándo se ejecutará.
Preguntas frecuentes
¿Qué significan los cinco campos de una expresión cron?
¿Cómo ejecuto una tarea cron cada 5 minutos?
¿Qué pasa si fijo el día del mes y el día de la semana a la vez?
¿Ejecuta cron las tareas durante el cambio de hora?
¿Qué zona horaria usa cron?
¿Puede cron ejecutar algo cada segundo?
Guías relacionadas
Herramientas de esta guía
Funcionan en tu navegador: no se sube nada.