このエントリーをはてなブックマークに追加
facebooktwittergoogle_plusredditpinterestlinkedinmail

こんにちは、tapunです。

Cron Job

Raspberry Piで写真撮影メール送信ができるようになりました。

また、スクリプトを書くことで上記の2つの作業をまとめて実施できるようにもなりました。

ただ、毎回Raspberry Pi にログオンしてコマンドをたたいたり、スクリプトを実行するのは面倒ですよね?

今日はcronを使って写真撮影とメール送信を自動化するための設定についてご紹介したいと思います。


cronって何?

cronとは、UNIX系システムの常駐プログラム(デーモン)の一種で、ユーザの設定したスケジュールに基づいて指定したコマンドやシェルスクリプトなどを自動実行してくれるプログラム。

実行スケジュールは毎時、毎日、毎週、毎月をはじめ細かく指定でき、「crontab」というファイルに記述・保存しておく。crond(cron daemon)というプロセスがcrontabの内容に従って、決められた日時にコマンドなどを実行してくれる。
引用:http://e-words.jp/w/cron.html

タスクスケジューラのようなものですね!


cronの設定の仕方

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

$ sudo /etc/init.d/cron start
[ ok ] Starting periodic command scheduler: cron.
  1. cronの設定をします
    $ crontab -e

     ※ログインしているユーザ用のcrontabを設定します。
     設定した内容は、そのユーザ権限で動きます。

    ※エディタはnanoで開きます。

  2. crontabの書き方
    設定項目は左から「分」「時」「日」「月」「曜日」「実行内容」です。
    設定項目 数値
    0 – 59
    0 – 23
    1 – 31
    1 – 12
    曜日 0 – 7 (0または7は日曜日)
    0=日、1=月、2=火、3=水、4=木、5=金、6=土、7=日

    それぞれの項目はリスト表示「1,3」にしたり、範囲指定「1-5」にしたり、どっちも合わせ技「1,3,5-10」にしたり、間隔「*/10(10分間隔)」にしたり割と自由度が高いです。

    例)平日は毎日、朝7時~9時、19時~1時に、30分置きに写真を撮るスクリプト(*スクリプトについてはこちらの記事参照)を実行する場合のサンプル

    0,30 0-1,6-9,19-23 * * 1-5 sudo sh /home/example/camera.sh

  3. [Ctrl + X] [y] [Return]でcrontabを保存するだけで設定は完了です。
    設定した時間にスクリプトが実行されるはずです。

参考:cronの動作確認をしたい場合は?

自分が設定した内容が正しく動作するかの確認は、現在時刻の2分後に設定して結果を見てみるのが手っ取り早いです。

※1分後では、crondがジョブを実行しようとしたときとのタイミングの問題で処理できないことがあるようです。

参考:cronの動作結果をメールで送る場合の手順

crontabに下記のように記載すれば実行結果が送られてきます。

※MTAの設定が必要です。(こちらの記事の手順を済ませていればOK)

MAILTO="メールアドレス"
00 00 * * 1 "実行させたいコマンド"

 


まとめ

cronとシェルスクリプトを組み合わせることで、自分の好きなタイミングで写真撮影+メール送信を実行できるようになりました!

私は、平日と休日でスクリプトを実行するタイミングを変えています。

crontabの記載例)

0,30 0-1,6-9,19-23 * * 1-5 sudo sh /home/example/camera.sh
0,30 0-1,8-23 * * 6,7 sudo sh /home/example/camera.sh

平日は6時~9時、19時~1時に30分おきに撮影してます。
休日は8時~1時まで30分おきに撮影しています。

※camera.shの記載内容はこちらの記事を参考にしてください。

このスクリプトを実行してると、写真がローカルに貯まりっぱなしになるので、次回は写真をクラウドストレージに送付する方法をご紹介しようと思います。



Raspberry Pi ブログランキングへ