特定の間隔でDjango管理コマンドを実行するサーバー(Ubuntu 18.04)があります。 (毎日16:30)cronを使用する前にこのようなタスクを設定しましたが、何らかの理由でサーバーはcronjobを実行できませんでした。
私が実行したい行は次のとおりです。 Python仮想環境の実行可能ファイルを使用してDjango管理コマンドを実行します。
30 16 * * * /home/username/project/venv/bin/python3 /home/username/project/DjangoProjectName/manage.py process_data >> /home/username/crontaak.log
端末から直接コマンドを実行すると、すべてがうまく機能します(ログファイルを含む)。 Cronもテストとして次のcronjobを追加するので、期待どおりに動作するようです。
* * * * * date > /home/username/crontestrun
また、これが問題を引き起こす可能性があることを示唆するいくつかの記事が見つかったので、スクリプトの最後に空白行があることを確認しました。
シミュレートされた(タスク)設定を使用して他のプロジェクトのcrontabを確認したところ、エラー/違いが見つかりませんでした(これはubuntu 16.04を実行しているサーバーで実行されていることを除く)。
ここで私の設定にどのような問題があるのか知っている人はいますか?
答え1
端末で使用:
echo $PATH
実行時にcron
Pythonスクリプトが端末で動作できるようにするすべてのパスがわかりません。
解決策は、Pythonスクリプトを呼び出すbashスクリプトを作成することです。ただし、これを行う前に、以下が実行されます。
PATH="new-paths:$PATH"