私は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