いつもハマった話ばかりだけれども、今日もlogrotateで

ログを取り始めたときに、いつも不思議に思ってたんだけど、なんで初日はrotateしないのか?ということ。
以下は手持ちサーバのCentOS5とかFedora5とかのRedhat系のOSの話。

これは、rotateの頻度がdailyと指定されているのにまだ24時間経っていなかったから、ということがある。
どうやってrotateの時間間隔が分かるのか?それは過去のrotateの実行履歴である /var/lib/logrotate.status に記録されているのだった。
だから、最初は記録が無いので、rotateは実行されない。

ところで、大事なログファイルだから、rotateしたらエラーでファイルが消えちゃった、とかいうことは避けたい。そのため、デバッグには

logrotate -d 設定ファイル名

とすればよいらしい。これを実行して、結果にerrorが出なければよい

(2008.05.12追記:/etc/logrotate.d 以下のファイルを単体でテストするだけではなくて、 logrotate -d /etc/logrotate.conf も実施しないと、設定ファイルの重複などのエラーが検出できないので注意)

なお、初日からむりやりrotateしようとして、logrotate -f (force:強制実行のオプション)を使うときは十分注意すること。
たとえば、コマンドラインから設定ファイルとして logrotate.d 以下のファイルを直接指定すると、共通部分である/etc/logrotate.conf の設定内容が無いために、ファイルが消えてしまったり、予想していない結果が出ることがあるようだ。というか、テスト用のログでは、消えました(劇汗
(以下、追記)
特に問題なのは、

rotate 回数
create

とかの設定が無い場合で、rotate 0と解釈されて、ファイルが消えます(汗
というわけで、/etc/logrotate.conf の内容を(/var/log/wtmp の設定の部分は除いて)コピーして設定ファイルの雛形として、気に入らない部分を変更するのがいいのではないかと。