Make.

決まった時間に処理する

Pocket

ここでは、RaspberryPiで定期処理を行う方法を解説しています。
RaspberryPiやLinuxで決まった時間に処理を行うには、cronを使用します。cronを使うことで、一定の感覚で処理をしたり、決まった時間や決まった日に処理をすることができます。
朝7時に携帯向けにメールを送信したり、10分毎にTwitterでつぶやいたりすることができます。


cronの起動

デフォルトでcronは動いていると思いますが、以下のコマンドでcronを起動できます。

$ sudo /etc/init.d/cron start
[ ok ] Starting periodic command scheduler: cron.

cronが動作しているかを確認します。

$ sudo apt-get install chkconfig
$ sudo chkconfig cron
cron on

cronの設定

cronの設定を確認する

$ crontab -l

cronの設定を確認

$ crontab -e

設定ファイル内で以下の形式で、コマンドを実行する時間を設定します。

分 時 日 月 曜日 コマンド

以下は、設定方法の一例です。

#毎日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

cronのログ

自分の環境で作ったプログラムは動作したのに、cronで動作させようとしたら動かないということがよくあるので、cronを動かす時のログをとっておくと便利です。

rsyslog.confを編集します。

$ sudo vi /etc/rsyslog.conf

以下の行をコメントアウトするだけで、/var/log/cron.logにログファイルが作成されます。

#cron.* /var/log/cron.log

次にログを記録するサービスの再起動します。

/etc/init.d/rsyslog restart

再起動が完了するとcronのログは、/var/log/cron.logにとられるようになります。

Pocket