OneKitTools logoOneKitTools
developer4 min de lectura

"Expresiones cron explicadas: del nivel básico a la planificación avanzada"

¿Qué es una expresión cron? Aprende la sintaxis, los campos y los caracteres especiales — con ejemplos del mundo real para planificaciones comunes como "cada día a medianoche" o "cada lunes a las 9".

OneKitTools Team14 de abril de 2026

¿Qué es una expresión cron?

Cron es un planificador de tareas basado en tiempo integrado en los sistemas Unix/Linux. Una expresión cron es la sintaxis que le indica a cron cuándo ejecutar una tarea.

Las has visto: 0 0 * * *. Significa "a medianoche, cada día." Pero en cuanto superas lo básico, la sintaxis cron se complica rápido — hay 5 campos, segundos opcionales, diferencias entre plataformas y caracteres especiales que la mayoría copia y pega sin entender.

Esta guía lo aclara todo.

Los 5 (o 6) campos

El cron estándar usa 5 campos separados por espacios:

┌──────────── minuto (0–59) │ ┌────────── hora (0–23) │ │ ┌──────── día del mes (1–31) │ │ │ ┌────── mes (1–12) │ │ │ │ ┌──── día de la semana (0–7, 0 y 7 = domingo) │ │ │ │ │ * * * * *

Algunos sistemas (AWS EventBridge, Spring, Quartz) añaden un campo de segundos al inicio, dando 6 campos. Revisa tu plataforma.

Caracteres especiales

CarácterSignificadoEjemplo
*Todos los valores* * * * * = cada minuto
,Múltiples valores0 9,17 * * * = 9h y 17h
-Rango0 9-17 * * * = cada hora de 9h a 17h
/Paso*/15 * * * * = cada 15 minutos
LÚltimo0 0 L * * = último día del mes (solo Quartz)
?Sin valor0 0 ? * MON = lunes, cualquier día del mes (Quartz)

Expresiones cron comunes

Cada minuto

* * * * *

Cada 5 minutos

*/5 * * * *

Cada hora, en punto

0 * * * *

Cada día a medianoche

0 0 * * *

Cada día a las 9h

0 9 * * *

Cada lunes a las 9h

0 9 * * 1

Cada día laborable (lun–vie) a las 8h

0 8 * * 1-5

Cada fin de semana al mediodía

0 12 * * 0,6

Primer día de cada mes a medianoche

0 0 1 * *

Cada trimestre (ene, abr, jul, oct) a medianoche

0 0 1 1,4,7,10 *

Cada 30 minutos entre las 9h y las 17h en días laborables

*/30 9-17 * * 1-5

Las trampas

"Cada 2 horas" es 0 */2 * * *, no */2 * * * *

*/2 * * * * significa cada 2 minutos. El paso se aplica al campo en el que está.

El domingo es 0 y 7

En cron estándar, 0 y 7 son ambos domingo. Evita ambigüedades — usa 0 de forma consistente.

Día del mes Y día de la semana son OR, no AND

0 0 1 * 1 se ejecuta el día 1 de cada mes Y cada lunes — no solo los lunes que caen en día 1. Si quieres "el primer lunes del mes", eso requiere lógica de script fuera del propio cron.

Zonas horarias

Cron se ejecuta en la zona horaria local del servidor a menos que se configure de otro modo. Una tarea en 0 9 * * * en un servidor UTC se ejecuta a las 9h UTC — lo que podría ser las 2h o las 23h en tu zona horaria.

Siempre verifica:

timedatectl   # muestra la zona horaria actual en Linux

Atajos con nombre (no estándar pero ampliamente soportados)

AtajoEquivalenteSignificado
@yearly0 0 1 1 *Una vez al año
@monthly0 0 1 * *Una vez al mes
@weekly0 0 * * 0Una vez a la semana (domingo)
@daily0 0 * * *Una vez al día (medianoche)
@hourly0 * * * *Una vez a la hora
@rebootAl iniciar el sistema

Genera y valida expresiones cron

Cron Generator te permite construir expresiones visualmente — elige el calendario en lenguaje claro, obtén la expresión cron. Sin más adivinar si 0 9 * * 1-5 es correcto.

También funciona al revés: pega cualquier expresión cron y obtén una explicación en lenguaje natural de cuándo se ejecuta.

Tarjeta de referencia rápida

# ┌──── minuto 0-59 # │ ┌─── hora 0-23 # │ │ ┌── día 1-31 # │ │ │ ┌─ mes 1-12 # │ │ │ │ ┌ semana 0-7 (0=dom) # │ │ │ │ │ * * * * * cada minuto 0 * * * * cada hora 0 0 * * * cada día a medianoche 0 9 * * 1 cada lunes a las 9h */15 * * * * cada 15 minutos 0 0 1 * * primer día de cada mes
Compartir