Blog

La sintaxis de cron explicada, campo por campo

Una guía práctica para leer y escribir expresiones cron — los cinco campos, los operadores, recetas habituales y la trampa de las zonas horarias.

SteadyCron cronplanificaciónguía

Las expresiones cron parecen crípticas, pero siguen una gramática pequeña y aprendible. Una vez que puedes leer los cinco campos y los cuatro operadores, 30 4 1,15 * * deja de ser un enigma. Esta es una guía práctica — y hay una herramienta explicadora gratuita si prefieres pegar una expresión directamente y ver qué hace.

Los cinco campos

Una expresión cron estándar tiene cinco campos separados por espacios:

┌───────────── minute        (0 - 59)
│ ┌─────────── hour          (0 - 23)
│ │ ┌───────── day of month  (1 - 31)
│ │ │ ┌─────── month         (1 - 12)
│ │ │ │ ┌───── day of week   (0 - 6, Sunday = 0)
│ │ │ │ │
* * * * *

De izquierda a derecha: minuto, hora, día del mes, mes, día de la semana.

Los cuatro operadores

  • * — cualquier valor. * * * * * significa cada minuto.
  • , — una lista. 1,15 en el campo día del mes significa el 1 y el 15.
  • - — un rango. 9-17 en el campo hora significa de las 09:00 a las 17:00.
  • / — un paso. */15 en el campo minuto significa cada 15 minutos.

Se combinan libremente: 0 9-17 * * 1-5 es “a la hora en punto, de 9 a 17, los días laborables.”

Recetas que realmente usarás

ExpresiónSignificado
*/15 * * * *Cada 15 minutos
0 9 * * 1-5Días laborables a las 09:00
30 4 1,15 * *A las 04:30 los días 1 y 15
0 */4 * * *Cada 4 horas
0 2 * * *A diario a las 02:00
0 0 * * 0Los domingos a medianoche

La trampa del día del mes / día de la semana

Si estableces ambos campos —día del mes y día de la semana— con valores distintos de *, la mayoría de las implementaciones cron los tratan como O, no como Y. 0 0 13 * 5 no significa “viernes 13” — significa “el día 13 de cualquier mes, y también todos los viernes.” Deja uno de los dos como * a menos que realmente quieras la unión.

La trampa de las zonas horarias

La mayor fuente de sorpresas con cron no es la sintaxis — es la hora. El cron del servidor suele correr en UTC, pero tú piensas en hora local, y dos veces al año el horario de verano desplaza el reloj. Un trabajo definido para “09:00” en un crontab en UTC se desplaza una hora cada primavera y otoño respecto a tu oficina.

La solución es planificar en una zona horaria real y dejar que el planificador gestione el cambio de horario. SteadyCron asigna a cada job su propia zona horaria IANA (como Europe/Berlin) y mantiene “09:00 todos los días laborables” a las 09:00 hora local, todo el año.

Pruébalo

Pega cualquier expresión en el explicador de expresiones cron para verla en lenguaje sencillo y previsualizar las próximas ejecuciones en tu zona horaria — luego planifícala en SteadyCron con retries y alertas.