Sintaxis de expresiones cron: una guía completa con ejemplos
Sintaxis de expresiones cron
Cron es el programador de tareas estándar en sistemas tipo Unix. Cada expresión cron define una programación en una cadena compacta que especifica cuándo debe ejecutarse un comando. Comprender la sintaxis es esencial para automatizar copias de seguridad, la rotación de registros y las tareas de mantenimiento.
El formato de 5 campos
Una expresión cron estándar tiene cinco campos separados por espacios:
* * * * *
| | | | |
| | | | +----- Día de la semana (0-7, 0 y 7 = domingo)
| | | +------- Mes (1-12)
| | +--------- Día del mes (1-31)
| +----------- Hora (0-23)
+------------- Minuto (0-59)
Detalles de los campos
| Campo | Rango | Caracteres especiales | Ejemplo |
|-------|-------|-------------------|---------|
| Minuto | 0-59 | , - * / | 30 = en el minuto 30 |
| Hora | 0-23 | , - * / | 6 = a las 6 AM |
| Día del mes | 1-31 | , - * / | 15 = el día 15 |
| Mes | 1-12 | , - * / | 6 = en junio |
| Día de la semana | 0-7 | , - * / | 0 = el domingo |
El minuto controla el minuto exacto de ejecución: 30 * * * * se ejecuta en el minuto 30 de cada hora. La hora define el momento del día: 0 6 * * * se ejecuta a las 6:00 AM diariamente. El día del mes limita a fechas de calendario específicas: 0 0 15 * * se ejecuta el día 15 de cada mes a medianoche. El mes limita la ejecución a meses específicos: 0 0 1 6 * se ejecuta el 1 de junio. El día de la semana controla qué días de la semana: 0 8 * * 1-5 se ejecuta a las 8 AM de lunes a viernes.
Importante: Los días 29-31 solo se ejecutan en los meses que tienen esas fechas. En meses más cortos, esos valores se omiten silenciosamente.
Caracteres especiales
| Carácter | Nombre | Propósito | Ejemplo |
|------|------|---------|---------|
| * | Asterisco | Todos los valores posibles | * en minuto = cada minuto |
| , | Coma | Valores de lista | 1,15,30 = minutos 1, 15, 30 |
| - | Guion | Rango | 9-17 = horas de 9 a 17 |
| / | Barra | Valores de paso | */5 = cada 5 minutos |
Valores de paso con la barra
La barra expresa "cada N unidades":
# Cada 5 minutos
*/5 * * * *
# Cada 2 horas
0 */2 * * *
# Cada 15 minutos durante el horario laboral
*/15 9-17 * * *
Patrones comunes de programación cron
| Programación | Expresión | Descripción |
|----------|------------|-------------|
| Cada minuto | * * * * * | Se ejecuta 1.440 veces al día |
| Cada 5 minutos | */5 * * * * | Comprobaciones de salud, monitoreo |
| Cada hora | 0 * * * * | Al inicio de cada hora |
| Dos veces al día | 0 6,18 * * * | 6 AM y 6 PM |
| Diario a medianoche | 0 0 * * * | Mantenimiento clásico |
| Domingo semanal | 0 0 * * 0 | Mantenimiento semanal |
| Día 1 del mes | 0 0 1 * * | Informes mensuales |
| Días laborables 9 AM | 0 9 * * 1-5 | Inicio del horario laboral |
Atajos no estándar
Algunas implementaciones de cron admiten atajos con nombre: @yearly (1 de enero), @monthly (día 1 del mes), @weekly (domingo), @daily (medianoche), @hourly y @reboot (se ejecuta una vez al iniciar el sistema). Compatible con Vixie cron, cronie y los temporizadores de systemd.
Errores comunes
- Configurar tanto el día del mes como el día de la semana crea una condición OR: el trabajo se ejecuta cuando cualquiera de los dos coincide, lo que rara vez es la intención.
- Cron usa la zona horaria del sistema. Los trabajos cercanos a los cambios de horario de verano pueden ejecutarse dos veces o no ejecutarse en absoluto.
- Cuente siempre cinco campos. Cuatro campos no es válido; seis campos requieren sintaxis cron extendida.
Pruebe sus expresiones cron
Use el validador de expresiones cron para comprobar la sintaxis, obtener una vista previa de los próximos momentos de ejecución y detectar errores antes de que afecten la producción. Una comprobación de validación de treinta segundos previene fallos de programación silenciosos.