cronを設定してpythonプログラムを定期的に実行する
cronで定期的にpythonスクリプトを実行する。
cronを起動する(既に起動している場合が多いが)
sudo /etc/init.d/cron start [ ok ] Starting cron (via systemctl): cron.service.
cronの設定ファイルを開き、コマンドを実行する時間を設定する。
crontab -e
一番下の行まで移動し、 設定を記述する。
以下は設定例の一覧
こちらのページからお借りしました
決まった時間に処理する | Make.
分 時 日 月 曜日 コマンド
#毎日6時にプログラムを実行する 00 6 * * * python /home/hoge/script1.py #毎時10分にプログラムを実行する 10 * * * * python /home/hoge/script2.py #15分毎にプログラムを実行する */15 * * * * python /home/hoge/script2.py #毎月20日10:00にプログラムを実行する 00 10 20 * * python /home/hoge/script3.py #毎週月曜日10:00にプログラムを実行する 00 10 * * 1 python /home/hoge/script4.py #cronでプログラムが動かない場合 2分毎にプログラムを実行し、エラーログを確認する */2 * * * * python /home/hoge/script5.py 2> /home/hoge/script5.log
私は5分おきに定期的に実行したかったので、
*/5 * * * * python /home/hoge/script2.py
としたのだが、エラーが出た。
調べてみたら、どうもパスが通ってないらしい。
pyenvでバージョン管理をしている人は、パスの通し方を工夫しなくてはいけらしい。
以下記事を参考にしました
【Python】cronでpyenv環境のPythonが実行されない時の対処法 – あずみ.net
まず、以下コマンドでコマンドのフルパスを表示させる
which python3 /home/hoge/.pyenv/versions/anaconda3-4.2.0/bin//python3
次にさきほどのcron設定内容を変更する
*/5 * * * * python /home/hoge/script2.py ↓ */5 * * * * /home/hoge/.pyenv/versions/anaconda3-4.2.0/bin//python3 /home/hoge/script2.py
python部分をpyenv環境のPython実行ファイルのパスに変更した。
これで定期的に起動するはず。