Comment définir des variables d'environnement pour les tâches Crontab ?

Publié 8 septembre 2024

Problème : Définir des variables d'environnement dans les tâches Crontab

Les tâches Crontab ont souvent besoin d'accéder à des variables d'environnement, mais ces variables ne sont pas automatiquement disponibles dans l'environnement cron. Cela peut entraîner des comportements inattendus ou des erreurs lors de l'exécution de tâches planifiées qui dépendent de paramètres d'environnement spécifiques.

Solutions pour définir des variables d'environnement dans Crontab

Méthode 1 : Définir les variables directement dans Crontab

Vous pouvez définir des variables d'environnement dans le fichier crontab. Pour ce faire :

  1. Ouvrez le fichier crontab pour le modifier :

    crontab -e
  2. Ajoutez vos variables d'environnement en haut du fichier :

    LANG=en_US.UTF-8
    PATH=/usr/local/bin:/usr/bin:/bin
  3. Ajoutez vos entrées de tâches cron :

    0 * * * * /chemin/vers/votre/script.sh

Cette méthode fonctionne pour les variables spécifiques à vos tâches cron.

Conseil: Vérifier les variables d'environnement

Après avoir défini des variables d'environnement dans crontab, vous pouvez les vérifier en ajoutant une tâche de test :

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

Cela écrira toutes les variables d'environnement dans un fichier, vous permettant de vérifier si elles sont correctement définies.

Méthode 2 : Charger des fichiers d'environnement dans les commandes Crontab

Vous pouvez charger vos fichiers d'environnement dans les entrées crontab :

  1. Modifiez votre fichier crontab :

    crontab -e
  2. Ajoutez une commande pour charger votre fichier d'environnement avant d'exécuter votre script :

    0 * * * * . $HOME/.bash_profile; /chemin/vers/votre/script.sh

Cela charge toutes les variables de votre .bash_profile (ou .bashrc) pour chaque tâche cron.

Méthode 3 : Créer un script d'encapsulation

Un script d'encapsulation peut configurer l'environnement avant d'exécuter votre script principal :

  1. Créez un script d'encapsulation, par exemple 'wrapper.sh' :

    #!/bin/bash
    source $HOME/.bash_profile
    /chemin/vers/votre/script_principal.sh
  2. Rendez le script d'encapsulation exécutable :

    chmod +x wrapper.sh
  3. Dans votre crontab, appelez le script d'encapsulation :

    0 * * * * /chemin/vers/wrapper.sh

Cette méthode est utile lorsque vous devez configurer un environnement complexe pour vos tâches cron.

Exemple: Journalisation dans le script d'encapsulation

Vous pouvez ajouter une journalisation à votre script d'encapsulation pour faciliter le débogage :

#!/bin/bash
echo "Démarrage de la tâche à $(date)" >> /var/log/cron_jobs.log
source $HOME/.bash_profile
/chemin/vers/votre/script_principal.sh
echo "Tâche terminée à $(date)" >> /var/log/cron_jobs.log

Cela enregistrera les heures de début et de fin de chaque exécution de tâche.