Formato de Expresiones Cron
I. Estructura Básica de las Expresiones Cron (con Fuentes Autorizadas)
Una expresión Cron estándar consiste en 5 campos de tiempo y 1 campo de comando, siguiendo las convenciones de los sistemas Unix y Linux. Según el IEEE Std 1003.1-2017 (Estándar POSIX)[1] y la documentación de Linux man 5 crontab
[2], el formato es:
* * * * * comando_a_ejecutar
│ │ │ │ │
│ │ │ │ └── Día de la semana (0-7, tanto 0 como 7 representan domingo)
│ │ │ └──── Mes (1-12)
│ │ └────── Día del mes (1-31)
│ └──────── Hora (0-23)
└────────── Minuto (0-59)
Nota Autorizada:
- El Estándar POSIX[1] define especificaciones mínimas de compatibilidad, requiriendo soporte para los símbolos
*
, ,
, -
.
- Las implementaciones de
cron
en sistemas Linux (como Cronie) extienden la funcionalidad con valores de paso (/
) y cadenas especiales (como @daily
), como se detalla en su documentación oficial[3].
II. Reglas de Símbolos para Campos de Tiempo
Cada campo de tiempo soporta los siguientes símbolos especiales:
Símbolo |
Descripción |
Ejemplo |
* |
Coincide con cualquier valor |
* en minutos = cada minuto |
, |
Especifica múltiples valores |
1,3,5 = minutos 1, 3, 5 |
- |
Define un rango |
10-15 = minutos 10 a 15 |
/ |
Valor de paso (intervalo) |
*/5 en minutos = cada 5 minutos |
? |
"Sin valor específico" (solo DOM/DOW) |
Usado para evitar conflictos |
Las implementaciones modernas de cron (como Vixie cron y sus derivados) soportan reglas de sintaxis más ricas. Según la documentación de referencia de IBM Cron[4] y el wiki del proyecto Cronie[3], los siguientes símbolos son ampliamente soportados:
Símbolo |
Descripción |
Ejemplo de Documentación Oficial |
L |
Último día (soportado en algunas implementaciones) |
0 0 L * * = ejecutar en el último día de cada mes[5] |
W |
Día laborable más cercano (ej: 15W = día laborable más cercano al día 15) |
Ver documentación de Quartz Scheduler[6] (común en ecosistemas Java) |
III. Origen de Alias Predefinidos (@daily, etc.)
Los alias como @daily
, @weekly
, etc., se originan en la implementación Cron de Paul Vixie (Vixie cron, lanzado en 1987)[7] y ahora son características predeterminadas en distribuciones modernas de Linux (como Debian y Red Hat). Según el manual de Debian cron
[8]:
# Equivalente a 0 0 * * *
@daily /ruta/al/script
IV. Diferencias de Implementación Comunes y Consideraciones
Diferentes implementaciones de cron tienen diferencias sutiles, requiriendo referencia a sus respectivas documentaciones:
Implementación |
Características |
Enlace a Recursos Oficiales |
Cronie |
Cron predeterminado de Red Hat, soporta atajos @ |
Cronie GitHub |
systemd |
Reemplaza cron con unidades .timer (recomendado para sistemas nuevos) |
Manual systemd.timer |
fcron |
Soporta sintaxis más compleja (ej: @yearly ) |
Sitio web fcron |
V. Herramientas de Validación Recomendadas y Referencias Autorizadas
-
Páginas de Manual de Crontab
Ejecute man 5 crontab
en el terminal para ver la sintaxis completa - la referencia de autoridad local más directa.
-
Generadores de Expresiones Cron
-
Documentación de Proyectos de Código Abierto
VI. Resumen
Al combinar el estándar POSIX, las páginas de manual de Linux y la documentación de implementaciones principales (como Cronie), los usuarios pueden comprender con precisión la lógica central de las expresiones cron. Para usos avanzados (como L
y W
), tenga cuidado con la compatibilidad de implementación y priorice los recursos oficiales.
Referencias