cron linux devops cheat-sheet scheduling automation

Guía Rápida de Sintaxis Cron: Referencia Completa y Visualizador

Una guía completa de la sintaxis de expresiones cron, incluyendo caracteres especiales, ejemplos comunes y explicación del visualizador. Domina la programación de crontab para Linux y Unix.

Guía Rápida de Sintaxis Cron: Referencia Completa

Cron es un programador de tareas basado en el tiempo en sistemas operativos tipo Unix. Ya sea que seas un desarrollador configurando una tarea en segundo plano o un ingeniero DevOps gestionando el mantenimiento del servidor, entender la Sintaxis de Expresiones Cron es esencial.

Esta guía proporciona un desglose completo de los campos de cron, caracteres especiales y ejemplos prácticos para ayudarte a programar tareas con confianza.


1. Formato de Expresión Cron

Una expresión cron estándar consta de cinco campos (o seis en algunos sistemas como Quartz o Jenkins).

┌───────────── minuto (0 - 59)
│ ┌───────────── hora (0 - 23)
│ │ ┌───────────── día del mes (1 - 31)
│ │ │ ┌───────────── mes (1 - 12)
│ │ │ │ ┌───────────── día de la semana (0 - 6) (Domingo a Sábado)
│ │ │ │ │
* * * * *

2. Referencia de Caracteres Especiales

Carácter Descripción Ejemplo
* Cualquier valor: Coincide con cada valor posible para ese campo. * * * * * (Cada minuto)
, Separador de lista: Especifica una lista de valores. 0,15,30,45 (Cada 15 minutos)
- Rango de valores: Especifica un rango de X a Y. 9-17 (De 9 AM a 5 PM)
/ Valores de paso: Especifica incrementos. */15 (Cada 15 minutos)
L Último (Last): Especifica el último día del mes o de la semana. 5L (Último viernes del mes)
W Día laborable (Weekday): El día laborable más cercano (Lun-Vie) a una fecha. 15W (Día laborable más cercano al 15)
# N-ésimo día del mes: Especifica la n-ésima ocurrencia de un día de la semana. 6#3 (Tercer sábado del mes)

3. Ejemplos Comunes de Cron

Programación Expresión Descripción
Cada Minuto * * * * * Ejecuta la tarea cada minuto.
Cada Hora 0 * * * * Ejecuta al inicio de cada hora.
Diario a Medianoche 0 0 * * * Ejecuta una vez al día a las 00:00.
Domingos a las 4 AM 0 4 * * 0 Ideal para copias de seguridad semanales.
Cada 15 Minutos */15 * * * * Ejecuta en :00, :15, :30 y :45.
Horario Laboral (9-5) 0 9-17 * * 1-5 Ejecuta cada hora en días laborables.

4. crontab -e vs crontab -l

El comando crontab se utiliza para gestionar tus tareas cron personales.

  • crontab -e: Abre tu archivo crontab personal para editarlo. Si es tu primera vez, se te pedirá que elijas un editor (como nano o vim).
  • crontab -l: Lista todas las tareas cron activas para el usuario actual.
  • crontab -r: Elimina todas tus tareas cron actuales. ¡Úsalo con precaución!

5. Visualizando tu Programación

Leer una expresión cron en bruto puede ser difícil. Por eso hemos creado el Visualizador de Programación Cron.

Nuestra herramienta te ayuda a:

  1. Analizar Expresiones: Traducción instantánea de 0 4 * * 0 a "A las 04:00 los domingos".
  2. Próximas Ejecuciones: Mira las próximas 5 ejecuciones programadas basadas en tu zona horaria.
  3. Descripciones Legibles: No más adivinanzas sobre lo que significa */5 9-17 * * 1-5.

FAQ: Solución de Problemas de Tareas Cron

P: ¿Por qué no se ejecuta mi tarea cron?

R: La razón más común son las variables de entorno. Cron se ejecuta con un entorno de shell mínimo. Usa siempre rutas absolutas para los comandos (ej. /usr/bin/python3 en lugar de python3) y registra tu salida en un archivo: * * * * * /ruta/al/script.sh >> /var/log/cron.log 2>&1.

P: ¿Cuál es la alternativa de systemd timer?

R: Las distribuciones modernas de Linux (como Ubuntu, Fedora) recomiendan los temporizadores de systemd sobre cron. Ofrecen un mejor registro vía journalctl, dependencias y una programación más flexible, aunque la configuración es más compleja.

P: ¿Cómo manejo los problemas de zona horaria en cron?

R: Por defecto, cron se ejecuta en la zona horaria local del sistema (usualmente UTC en servidores). Algunos sistemas te permiten configurar CRON_TZ=Europe/Madrid al principio del archivo crontab, pero la forma más fiable es sincronizar el reloj de tu servidor con la zona horaria deseada.


Relacionado en Tool3M