logrotateによるログのローテーション
私の環境はCentOS 5.3です。
logrotateは/etc/cron.daily/にセットされてる。
$ cat /etc/cron.daily/logrotate #!/bin/sh /usr/sbin/logrotate /etc/logrotate.conf EXITVALUE=$? if [ $EXITVALUE != 0 ]; then /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]" fi exit 0
/etc/logrotate.conf内では、/etc/logrotate.d をインクルードしている。
よって、個別のローテーションの設定はこのディレクトリ内に書く。
例えば、この記事によると、Red Hat Linux 7.3のデフォルトでは、/etc/logrotate.d/syslog は次のようになっている。
/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron { sharedscripts postrotate /bin/kill -HUP 'cat /var/run/syslogd.pid 2> /dev/null ' 2> /dev/null || true endscript }
logrotateのテスト実行
「logrotateは最後にローテーションした日」の情報を/var/lib/logrotate.statusというファイルに持っている。
従って、テストでローテーションを行いたい時は、このファイルを編集して、該当のログのローテーション日を十分古い日付にすればいい。
$ vi /var/lib/logrotate.status # ローテーション日を改ざん $ logrotate -v /etc/logrotate.conf # -v はデバッグログ出力