2016-10-05 5 views
2

私はcrontabとenvで多くのスレッドを読んだことがありますが、それでも正しく設定することはできません。私はcronジョブで使用しているのと同じ環境を使用する方法は?

私はそうcrontab -e

*/1 * * * * env - `cat /path/to/env_setting` /bin/bash ; /bin/bash /path/to/program.sh 

で、実行するために同じENVの設定とはbashを使用する必要がある。しかし、それは動作しませんので、私は

env > env_setting 

を使用。私がcronジョブで使用しているのと同じ環境を使用するには?

P.S私はRed Hatを使用しています。

編集: 私はprogram.sh

env >> temp.log 2>&1 
env - `cat /path/to/env_setting` 
env >> temp.log 2>&1 

に次のように試してみました。しかしtemp.logで2つのenv出力はまったく同じです。 env_setting

+0

'のenv猫 - .../binに/ bash' 1つのプロセスです。 ';'は "新しいプロセスを開始する"ことを示します。おそらくもっと良い解決策がありますが、 '' env-cat/path/to/env_settings/bin/bash/path/to/prog.sh'を試してください。 '' 'charsは本当にバックチックです。現代の "cmd-sub"を '$(。cmd-sub ...)'で使用していませんか?がんばろう。 – shellter

+0

実際に投稿を投稿する前に私はあなたのやり方を試してみましたが、うまくいきませんでした。 –

+0

'。/ program.sh':'の先頭に行を追加することはできません。/path/to/env'(スクリプト内のファイルのソースですか?)がんばろう。 – shellter

答えて

0

cronにはいくつかの癖や問題があり、環境変数の扱いは注目に値するものです。環境を再インポートすることで問題を回避できますが、可能であれば、cronを完全に避ける方がはるかに良い方法です。多くのユースケースでは、at commandがはるかに機能し、他の機能の中でcronが削除されたものではなく、環境内での範囲内で実行されます。

さらに詳しい情報:

関連する問題