このページには 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/cron
に EXTRA_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 と記載するとエラーになって実行されませんので注意が必要です。