web-dev-qa-db-ja.com

cronjobは.bashrcで定義された環境変数を見つけることができません

私は解決策を探してみましたが、標準の定義された解決策を得ることができなかった非常に簡単な要件があります。 correctソリューションとは何ですか?.

Question:crontabを使用してcronジョブ(pythonスクリプト)を実行する必要があります。

crontab -eを使用して、次の行をcronファイルに追加しました。

* * * * * /usr/bin/python /srv/x/y/src/run.py > /tmp/listener.log 2>&1

スクリプトは起動しますが、内部で環境変数を使用しています。 環境変数が定義されていないというエラーがログファイルに表示されますか?

env vrasはどこで定義すればよいですか?私も.bashrcで定義しようとしましたが、それでも同じエラーです。 cronjobはそれを見つけることができません。

私は何が欠けていますか?

1
anekix

以下から構成される小さなbashスクリプトを作成しますmypythonscript

#!/bin/bash
set ENVIRONMENT_VARIABLE_1=...
set ENVIRONMENT_VARIABLE_2=...
/usr/bin/python /srv/x/y/src/run.py > /tmp/listener.log 2>&1

実行可能にする:

chmod +x mypythonscript

Crontabで次の行を置き換えます

* * * * * /path/to/mypythonscript
1
Jos

変数の定義を2か所に保持するのではなく、プログラム呼び出しを、~/.bashrcをソースとする単純なbashスクリプトでラップします。

#!/bin/bash
source $HOME/.bashrc
/usr/bin/python /srv/x/y/src/run.py > /tmp/listener.log 2>&1  

chmod +xスクリプトを実行し、crontabから実行します。

1
waltinator