Python & Raspberry Pi 開発ブログ ☆彡

PythonとRaspberry Piの基本的な使い方をわかりやすく解説。初心者、入門者必見!!

Cronの使い方

今回は、スクリプトを定期実行してくれるcronというサービスについて紹介したいと思います。起動時に毎回実行したい、指定した時間にスクリプトを実行したいという場面は多いと思います。そんなときに、このcronという機能はとても役に立ちます。

cronサービスが動いているか確認

デフォルトでcronサービスは動いていると思いますが、念のため確認しておきましょう。chkconfigをインストールしていない場合はsudo apt-get install chkconfigコマンドでインストールしてください。

$ chkconfig cron

cron onと表示されていれば、問題ありません。cron offとなっている場合は、下記コマンドでcronサービスを有効にしてください。

$ sudo systemctl enable cron

cronの設定方法

まず、下記のコマンドでcrontabを起動し、定期実行したい時間とそのスクリプトを書き込み設定を行います。

$ crontab -e

※設定した内容は、そのユーザ権限で実行されます。

crontabの書き方

左から 分[0-59] 時[0-23] 日[1-31] 月[1-12] 曜日[0-7]「実行内容」の順番で記載します。各項目はスペースを開けて記載します。また、下記のような書き方もできます。

◆複数指定 ⇒ カンマで区切ります。「0,30」
◆範囲指定 ⇒ ハイフンを使用します。「8-17」
◆間隔 ⇒ 右記のように記載します。「*/10(10分間隔)」

◇例1 8時~12時の0分、30分にtest.pyを実行する 00,30 8-12 * * * python home/pi/test.py
◇例2 15分毎にtest.pyを実行する */15 * * * * python /home/pi/test.py
◇例3 起動時に毎回、test.pyを実行する @reboot python /home/pi/test.py

プログラムのパスはフルパスで記載しておいたほうが安全です。

test.pyは、以下のコードを使用しました。test.pyが起動した時刻をcron_test.txtに保存するだけです。

from datetime import datetime

with open("cron_test.txt", "w") as f:
    f.write("[{}] cron_test".format(datetime.now().strftime('%Y-%m-%d %H:%M:%S')))
    

エラー時のログ

cronがうまく動かいない場合が出てきたときにログが出力されるようにしておくと、問題解決に役立ちます。 下記コマンドで、rsyslog.confを編集して、ログが出るようにします。

$ sudo nano /etc/rsyslog.conf

#cron...となっている部分の#を削除して、再起動します。ます。これで、/var/log/cron.logにログファイルが生成されるようになります。

rsyslog.conf

使い方も簡単ですので、ぜひ活用してみてください。

ラズパイ 設定に戻る
トップページに戻る