Python:仮想環境でスクリプトを実行するようにcrontabを設定する方法

Python:仮想環境でスクリプトを実行するようにcrontabを設定する方法

私はLinuxでcronjobを作成するのが初めてです。私の目標は、独自の仮想環境でPythonスクリプトを実行することです。

これを行うには、まず次のシェルスクリプトを作成しました。Twitter.shその内容は次のとおりです。

source /home/josecarlos/Workspace/python/robot2-rss/venv/bin/activate 
python /home/josecarlos/Workspace/python/robot2-rss/main.py R,1

そしてそのパスは次のとおりです。

/home/josecarlos/Workspace/python/robot2-rss

パスのおかげで、ソースコードとPythonコマンドにアクセスできます。/usr/bin以下のようにPATH変数に含まれています。

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin

私のcronjobの設定は次のとおりです。

# m h  dom mon dow   command
*/1 * * * * /home/josecarlos/Workspace/python/robot2-rss/twitter.sh

しかし、私のcronタスクのこの設定はうまくいかず、私が間違っているかどうかわかりません:(

編集1:

twitter.shスクリプトを次の新しいコードに修正しました。

#!/bin/sh

/home/josecarlos/Workspace/python/robot2-rss/venv/bin/python /home/josecarlos/Workspace/python/robot2-rss/main.py R,1

スクリプトを直接実行すると正常に動作しますが、cronジョブを使用すると機能しません! :(

編集2:

twitter.shの最後の修正では、Pythonスクリプトを呼び出しました。次のようにPythonスクリプトを直接呼び出すようにcronジョブを修正しました。

# m h  dom mon dow   command
* * * * * /home/josecarlos/Workspace/python/robot2-rss/venv/bin/python /home/josecarlos/Workspace/python/robot2-rss/main.py R,1

動作しません:(何が起こるのかわからない:(

答え1

適切なシェル設定

twitter.sh 編集

#!/bin/bash
PATH=....
source /home/josecarlos/Workspace/python/robot2-rss/venv/bin/activate 
python /home/josecarlos/Workspace/python/robot2-rss/main.py R,1

必ずPATHを設定してください。

コマンド結果の履歴

crontabにログインセクションを追加する

*/1 * * * * /home/josecarlos/Workspace/python/robot2-rss/twitter.sh >> /var/log/twitter.log 2>&1

何かが間違っていると見ることができます/var/log/twitter.log

関連情報