GNU/Linux >> Linux の 問題 >  >> Linux

crontab の実行には、実行中のユーザーと同じ環境変数がありません

Cron は常にほとんど空の環境で実行されます。 HOMELOGNAME 、および SHELL 設定されています;非常に限られた PATH .したがって、実行可能ファイルへの完全なパスを使用し、cron を使用するときにスクリプトで必要な変数をエクスポートすることをお勧めします。 .

cron で環境変数を設定する方法はいくつかあります 、しかし、それらはすべて、スクリプトで設定することになります.

アプローチ 1:

スクリプトで必要な各変数を手動で設定します。

アプローチ 2:

プロフィールを参照してください:

. $HOME/.bash_profile (または . $HOME/.profile )

(通常、上記のファイルは他のファイルをソースすることがわかります (例:~/.bashrc --> /etc/bashrc --> /etc/profile.d/* ) - そうでない場合は、それらも入手できます。)

アプローチ 3:

環境変数をファイルに保存します (目的のユーザーとして実行します):

env > /path/to/my_env.sh

次に、cron スクリプトを介してインポートします:

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

アプローチ 4:

場合によっては、グローバル cron を設定できます /etc/default/cron の変数 .ただし、これらはすべての cron に対して設定されるため、これにはリスクの要素があります。


Linux
  1. Linuxで環境変数とシェル変数を設定/作成する方法

  2. cron / crontabログはどこにありますか? / cronログを有効にする方法は?

  3. コマンドラインで環境変数を設定し、それをコマンドに表示するにはどうすればよいですか?

  1. シェル変数と環境変数の使用法の違いは?

  2. su に現在のユーザー環境変数を与える方法

  3. 明らかに隠された環境変数を出力するには?

  1. 環境変数を設定するための最良のディストリビューション/シェルにとらわれない方法は何ですか?

  2. Tmux.confファイルで環境変数を使用していますか?

  3. Crontab ログ:私の Cron スクリプトの出力をログに記録する方法