GNU/Linux >> Tutoriels Linux >  >> Linux

l'exécution crontab n'a pas les mêmes variables d'environnement que l'utilisateur exécutant

Cron s'exécute toujours avec un environnement essentiellement vide. HOME , LOGNAME , et SHELL sont définis ; et un PATH très limité . Il est donc conseillé d'utiliser des chemins complets vers les exécutables et d'exporter les variables dont vous avez besoin dans votre script lorsque vous utilisez cron .

Il existe plusieurs approches que vous pouvez utiliser pour définir vos variables d'environnement dans cron , mais ils reviennent tous à le définir dans votre script.

Approche 1 :

Définissez manuellement chaque variable dont vous avez besoin dans votre script.

Approche 2 :

Sourcez votre profil :

. $HOME/.bash_profile (ou . $HOME/.profile )

(Vous constaterez généralement que le fichier ci-dessus source d'autres fichiers (par exemple ~/.bashrc --> /etc/bashrc --> /etc/profile.d/* ) - si ce n'est pas le cas, vous pouvez également vous en procurer.)

Approche 3 :

Enregistrez vos variables d'environnement dans un fichier (exécuté en tant qu'utilisateur souhaité) :

env > /path/to/my_env.sh

Importez ensuite via votre script cron :

env - `cat /path/to/my_env.sh` /bin/sh

Approche 4 :

Dans certains cas, vous pouvez définir le cron global variable en /etc/default/cron . Il y a cependant un élément de risque à cela, car ceux-ci seront définis pour tous les cron emplois.


Linux
  1. Comment définir et supprimer des variables d'environnement locales, utilisateur et système sous Linux

  2. Où est le journal cron/crontab ? / Comment activer le Cron Log ?

  3. Quelle est la meilleure façon Distro/shell-agnostic pour définir des variables d'environnement ?

  4. Où puis-je définir les variables d'environnement que crontab utilisera ?

  5. Comment imprimer des variables d'environnement apparemment cachées ?

Comment définir une variable d'environnement dans Windows

Comment définir des variables d'environnement dans MacOS

Comment définir et répertorier les variables d'environnement sous Linux

Comment définir et répertorier les variables d'environnement sous Linux

Comment définir et supprimer des variables d'environnement sous Linux

Où est définie la variable d'environnement $HOME ?