CHANyoshiのブログ

初心者プログラマーです。

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実行ファイルのパスに変更した。

これで定期的に起動するはず。