The Geek Stuff にはlogrotate
の例があります。 copytruncate
は、元のログファイルをコピーして切り捨てます。
では、なぜcreate
を使用する必要があるのでしょうか。元のログファイルは削除されていません。
/tmp/output.log {
size 1k
copytruncate
create
compress
compresscmd /bin/bzip2
compressext .bz2
rotate 4
maxage 100
}
別の質問は、maxage 100
? rotate 4
ディレクティブは、4ローテーション後に古いログファイルを削除します。
それはおそらく間違いであり、そのチュートリアルの1つの例でのみ見られます。他のすべての例には、copytruncate
オプションなしのcreate
があります。また、logrotate
man page は、それが実際に無視されることを示します:
copytruncate
古いログファイルを移動してオプションで新しいログファイルを作成するのではなく、コピーを作成した後、元のログファイルをゼロサイズに切り捨てます。一部のプログラムにログファイルを閉じるように指示できないため、以前のログファイルへの書き込み(追加)を永久に続ける可能性がある場合に使用できます。ファイルのコピーと切り捨ての間に非常に小さなタイムスライスがあるため、一部のログデータが失われる可能性があることに注意してください。このオプションを使用すると、古いログファイルがそのまま残るため、作成オプションは無効になります。
maxage
については、たとえば、ローテーション期間(日/週/月)が少ない場合に空になる可能性のあるログファイルの場合に役立つと思います— notifempty
を使用すると、空のログファイルはローテーションされませんなので、ローテーションされたファイルが古すぎる可能性があります。