私は非常に長く(そして、面倒な)crontabを持っています。だから私は変数を導入することでそれを掃除し始めました。そして、私は変数を連結すること(私はBashスクリプトのように)は私のcrontabで動作しないことに気付きました。これは私が持っているものです。crontabで変数を連結しても機能しません
SHELL=/bin/bash
HOME=/Users/leuchtturm
# [1] Previously had this, but this does not seem to work
# $HOME is not being evaluated? Why?
#
# VIRTUALENV_PYTHON=$HOME/.virtualenvs/py361/bin/python
# Now I have this (elaborated)
VIRTUALENV_PYTHON=/Users/leuchtturm/.virtualenvs/py361/bin/python
# the crontab entry
# Here $HOME is being expanded, but not in the example above [1]
#
*/2 * * * * source $HOME/.config_vars && $VIRTUALENV_PYTHON $HOME/workspace/monitoring/check_server.py
だから、この行に VIRTUALENV_PYTHON=$HOME/.virtualenvs/py361/bin/python
変数$HOME
が評価されていません。私のcronログに "path not found"というエントリがあります。
誰かが私を啓発できますか?ありがとう!
私のアプローチは基本的に間違っていますか?私は、詳細とパス設定をbashスクリプトに入れて、crontabなどのパスを設定するのではなく、そのスクリプトをcronjobから呼び出す必要がありますか?もしそうなら、そのスクリプトはどこにあるべきですか?私のPythonプロジェクトフォルダには? – Ugur
特定の* cron *のバージョンでは、変数を定義することはできませんが、ほとんどのことが考えられます。 * crontab *エントリをより明確にするために変数を定義するアプローチを使用してください。他のものを定義するために変数を使用しないでください。 –
また、価値があるかもしれないが、私は通常、* crontab *からプログラムを呼び出すa * bash *(シェル)スクリプトを定義します。スクリプトの頭では、私が必要とする変数を定義し、プログラム(あなたの場合はPython)を呼び出します。それはあなたにファイルを準備し、それらをきれいにするなどの場所を与えます。 –