ログローテートのテストを行うのに、毎晩確認するのは手間がかかる。
シェルを直接叩くときは成功するのに、実際にログローテートすると失敗してたりする。(パスやパーミッションなど)
そこでテストする方法をメモ
/etc/cron.daily/logrotate を見ると、「/var/lib/logrotate/logrotate.status」のステートファイルを確認してローテート実行するようになっている。
# cat /etc/cron.daily/logrotate #!/bin/sh /usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf EXITVALUE=$? if [ $EXITVALUE != 0 ]; then /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]" fi exit 0
この日付の部分を修正する。
例えば1日前とか、1週間前とかテストしたいログのローテートのスパンによって変える。
一部抜粋
# cat /var/lib/logrotate/logrotate.status logrotate state -- version 2 "/var/log/yum.log" 2021-3-23-9:20:30 "/var/log/maillog" 2021-3-23-9:20:30 "/var/log/secure" 2021-3-23-9:20:30 "/var/log/messages" 2021-3-23-9:20:30 ・ ・ ・
実際に本番を想定してCronで実行する。
これは10:00に実行する例
0 10 * * * bash -x /etc/cron.daily/logrotate > /tmp/logrotate.log