¿Cómo configurar variables de entorno para trabajos de Crontab?

Publicado 8 de septiembre de 2024

Problema: Configurar Variables de Entorno en Tareas de Crontab

Las tareas de crontab a menudo necesitan acceder a variables de entorno, pero estas variables no están disponibles automáticamente en el entorno de cron. Esto puede causar comportamientos inesperados o errores al ejecutar tareas programadas que dependen de configuraciones específicas del entorno.

Soluciones para Configurar Variables de Entorno en Crontab

Método 1: Definir Variables Directamente en Crontab

Puedes configurar variables de entorno en el archivo crontab. Para hacerlo:

  1. Abre el archivo crontab para editarlo:

    crontab -e
  2. Añade tus variables de entorno en la parte superior del archivo:

    LANG=es_ES.UTF-8
    PATH=/usr/local/bin:/usr/bin:/bin
  3. Añade tus entradas de tareas cron:

    0 * * * * /ruta/a/tu/script.sh

Este método funciona para variables específicas de tus tareas cron.

Consejo: Verificar Variables de Entorno

Después de configurar las variables de entorno en crontab, puedes verificarlas añadiendo una tarea de prueba:

* * * * * env > /tmp/cron-env.txt

Esto escribirá todas las variables de entorno en un archivo, permitiéndote comprobar si están configuradas correctamente.

Método 2: Cargar Archivos de Entorno en Comandos de Crontab

Puedes cargar tus archivos de entorno dentro de las entradas de crontab:

  1. Edita tu archivo crontab:

    crontab -e
  2. Añade un comando para cargar tu archivo de entorno antes de ejecutar tu script:

    0 * * * * . $HOME/.bash_profile; /ruta/a/tu/script.sh

Esto carga todas las variables de tu .bash_profile (o .bashrc) para cada tarea cron.

Método 3: Crear un Script Envoltorio

Un script envoltorio puede configurar el entorno antes de ejecutar tu script principal:

  1. Crea un script envoltorio, por ejemplo, 'envoltorio.sh':

    #!/bin/bash
    source $HOME/.bash_profile
    /ruta/a/tu/script_principal.sh
  2. Haz que el script envoltorio sea ejecutable:

    chmod +x envoltorio.sh
  3. En tu crontab, llama al script envoltorio:

    0 * * * * /ruta/a/envoltorio.sh

Este método es útil cuando necesitas configurar un entorno complejo para tus tareas cron.

Ejemplo: Registro en Script Envoltorio

Puedes añadir registros a tu script envoltorio para ayudar con la depuración:

#!/bin/bash
echo "Iniciando tarea en $(date)" >> /var/log/tareas_cron.log
source $HOME/.bash_profile
/ruta/a/tu/script_principal.sh
echo "Tarea finalizada en $(date)" >> /var/log/tareas_cron.log

Esto registrará los tiempos de inicio y fin de cada ejecución de la tarea.