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:
-
Abre el archivo crontab para editarlo:
crontab -e -
Añade tus variables de entorno en la parte superior del archivo:
LANG=es_ES.UTF-8 PATH=/usr/local/bin:/usr/bin:/bin -
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:
-
Edita tu archivo crontab:
crontab -e -
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:
-
Crea un script envoltorio, por ejemplo, 'envoltorio.sh':
#!/bin/bash source $HOME/.bash_profile /ruta/a/tu/script_principal.sh -
Haz que el script envoltorio sea ejecutable:
chmod +x envoltorio.sh -
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.





