ここでは、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にとられるようになります。