クローン/Pythonの使用

クローン/Pythonの使用

私のcrontabジョブが正しく書かれたかどうかを知りたいです。 VPSで実行したいのですが、モニタリングは事実上不可能です。もう心配しないで、私のクローンの仕事は次のようになります。

# cd into directory at 2:57 AM 
57 2 * * 1-5 cd /folder_name

# activate the virtual environment
58 2 * * 1-5 . env/bin/activate

# run the main script
59 2 * * 1-5 python main.py

# at 5pm break the script (worried the most about this part)
0 16 * * 1-5 ^C

また、システム時計を東部時刻に変更しました。これは、cronジョブが東部タイムゾーンを使用して実行されることを意味しますか?

答え1

いいえ、cronシェルではありません。スクリプトを書く:

#!/bin/sh
cd /folder_name
. env/bin/activate
exec python main.py

実行可能にしてからエントリを指定してくださいcrontab

57 2 * * 1-5 /path/to/script

その後、スクリプトは毎週月曜日から金曜日までのローカルタイムゾーン(コンピュータが考えるタイムゾーン)の2時57分に実行する必要があります。メールシステムを正しく設定すると、結果(存在する場合)がメールに送信されます。

答え2

クローン操作が間違って書かれています。各クローン操作には独自の環境があります。つまり、そのcdコマンドは後続のクローン操作とは無関係です。

仮想環境では、仮想環境を手動で有効にして直接which python実行することをお勧めします。これにより、pythonその仮想環境内で常に実行できるフルパスが提供されます。 cronでこのPythonパスを使用する必要があります。

最終的なクローンタブは次のようになります。

0 3 * * 1-5 /full/path/to/virtualenv/python /full/path/to/main.py

後でプロセスを終了する場合、この問題を解決する最も一般的な方法はpidfileを使用することです。これを行うのに役立ついくつかのPythonライブラリがあります。 この回答このトピックについては非常に徹底していますが、crontabの問題とは実際には関係ありません。

関連情報