[Python #22] Linuxでのcronを用いたスクリプトの定時実行

こんにちは。PythonチームのH.Kです。今回は、Linuxでコマンドを定時実行する方法について説明したいと思います。

cronとは

Linuxでコマンドを定時実行するためのサービスです。

cronの設定方法

まずはcronの設定を保存しているcrontabファイルを編集します。

crontab -e

このコマンドを使うと、crontabコマンドの編集画面に移動します。例えばsample.pyというpythonスクリプトを実行したい際には、crontabは以下のように設定します。

* * * * * python3 /home/user1/sample.py

*の部分は分、時、日、月、曜日をそれぞれ設定します。例えば、

/10 * * * *  python3 /home/user1/sample.py #10分毎に実行したい場合)
* 9,17 * * * python3 /home/user1/sample.py #毎日9時と17時に実行したい場合
* 8 * * 1 python3 /home/user1/sample.py #毎週月曜日の8時に実行したい場合

といった感じです。~時間ごと、に実行したい場合は/をつけます。また、曜日は日曜日が0で月曜日が1で、といった風に設定します。

ただし、crontabを使うのではなく、cron.dを直接編集する方法のほうが推奨されています。その方法は下記の通りです。

sudo nano /etc/cron.d/sample

sampleファイルに実行したいコマンドを書けばOKです。

動かないときは

pythonスクリプトが実行されないときがあります。その場合は、

* /30 * * * /usr/bin/python3 /home/user1/sample.py

とpythonのフルパスを指定すると高確率で動作します。

用途

ファイナルアンサーでは、このcrontabをシステムの毎朝の自動起動や、運用しているWebサイトがダウンしていないかを一定間隔で確認するといった用途でこのcronを使用しています。Linuxコマンドに興味がある人は、pythonチームのインターンにぜひ参加してみてください。

参考文献

【Linux】cronでスクリプト定時実行を設定する