GNU/Linux >> Znalost Linux >  >> Linux

Spouštění crontab nemá stejné proměnné prostředí jako spouštějící uživatel

Cron vždy běží s většinou prázdným prostředím. HOME , LOGNAME a SHELL jsou nastaveny; a velmi omezené PATH . Při použití cron je proto vhodné použít úplné cesty ke spustitelným souborům a exportovat všechny proměnné, které ve skriptu potřebujete. .

Existuje několik přístupů, které můžete použít k nastavení proměnných prostředí v cron , ale všechny představují nastavení ve vašem skriptu.

Přístup 1:

Nastavte každou proměnnou, kterou potřebujete, ručně ve svém skriptu.

Přístup 2:

Zdroj vašeho profilu:

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

(Obvykle zjistíte, že výše uvedený soubor bude zdrojem jiných souborů (např. ~/.bashrc --> /etc/bashrc --> /etc/profile.d/* ) – pokud ne, můžete je také použít.)

Přístup 3:

Uložte proměnné prostředí do souboru (spusťte jako požadovaný uživatel):

env > /path/to/my_env.sh

Poté importujte pomocí skriptu cron:

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

Přístup 4:

V některých případech můžete nastavit globální cron proměnné v /etc/default/cron . S tím je však spojeno určité riziko, protože tyto budou nastaveny pro všechny cron pracovních míst.


Linux
  1. Jak nastavit/vytvořit proměnné prostředí a prostředí v Linuxu

  2. Kde je protokol cron / crontab? / Jak povolit protokol Cron?

  3. Jak nastavit proměnnou prostředí na příkazovém řádku a nechat ji zobrazit v příkazech?

  1. Rozdíl v použití mezi proměnnými shellu a proměnnými prostředí?

  2. Používání proměnných prostředí v souborech Tmux.conf?

  3. Kde je nastavena proměnná prostředí $HOME?

  1. Jaký je nejlepší způsob nastavení proměnných prostředí podle distro/shell agnostického prostředí?

  2. Crontab Log:Jak protokolovat výstup mého skriptu Cron

  3. Proměnné uživatelského prostředí S „su“ a „sudo“ v Linuxu