cron の実行ログ出力の有効化

このページには Raspberry Pi OS で cron の実行ログを出力させるための設定について書いてあります。

Raspberry Pi OS で cron の実行ログ出力の有効化 #

cron の rsyslog への登録 #

Raspberry Pi OS ではデフォルトで cron デーモンは動いています。 念のため OS をインストールしただけの状態で確認すると次のように起動しています。

pi@raspberrypi:~ $ sudo service cron status
● cron.service - Regular background program processing daemon
   Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2021-01-11 13:09:09 GMT; 4 weeks 0 days ago
     Docs: man:cron(8)
 Main PID: 251 (cron)
    Tasks: 1 (limit: 881)
   CGroup: /system.slice/cron.service
           └─251 /usr/sbin/cron -f

Jan 11 13:09:09 raspberrypi systemd[1]: Started Regular background program processing daemon.
Jan 11 13:09:09 raspberrypi cron[251]: (CRON) INFO (pidfile fd = 3)
Jan 11 13:09:09 raspberrypi cron[251]: (CRON) INFO (Running @reboot jobs)

ただし、rsyslog に cron が登録されていないので cron の実行ログ出力がされません。 /etc/rsyslog.conf を見ると cron 用の設定項目はコメントされているだけなので、コメントアウトして、rsyslog を再起動すれば、設定完了です。

$ sudo sed -i -e 's/#cron.\*/cron.\*/g' /etc/rsyslog.conf
$ sudo /etc/init.d/rsyslog restart
[ ok ] Restarting rsyslog (via systemctl): rsyslog.service.

これで、 /var/log/cron.log に cron の実行ログが出力されるようになります。

cron のログレベルの変更 #

必要に応じて cron のログとして出力するログレベルを変更できます。 cron の設定ファイル /etc/default/cronEXTRA_OPTS の設定がありますので、-L loglevel を設定して、cron サービスを再起動すればよいです。

次のコマンドは、すべてのログを出力する -L 15 を指定する例です。

$ sudo sed -i -e 's/#EXTRA_OPTS=""/EXTRA_OPTS="-L 15"/g' /etc/default/cron
$ sudo /etc/init.d/cron restart

オプションの説明は こちら をご参照ください。

(参考) crontab で時間をずらして実行する書き方 #

たとえば、5分間隔で cron を動かしたいものの、開始時間をずらしたいといった場合は、次のように書けます。

# 0分、5分、10分、……、55分
*/5 * * * * command

# 1分、6分、11分、……、56分
1-56/5 * * * * command

# 2分、7分、12分、……、57分
2-57/5 * * * * command

# 3分、8分、13分、……、58分
3-58/5 * * * * command

# 4分、9分、14分、……、59分
4-59/5 * * * * command

なお、時間範囲はすべて 0 始まりですので、たとえば分の場合 0-59 が設定可能範囲なので 60 と記載するとエラーになって実行されませんので注意が必要です。