createとcopytruncateを一緒に使用する理由は何ですか?


40

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ローテーション後に古いログファイルを削除します。


4
はい、それは理にかなっておらず、man logrotatecopytruncate:[...]このオプションを使用すると、古いログファイルがそのままであるため、作成オプションは効果がありません。」
ウルリッヒ・シュワルツ

1
maxage 100100日以上経過し、現在のファイルがローテーションされると、ローテーションされたファイルを削除します。4ローテーションされたファイルが少ない場合でも。
ルッツプレシェルト

回答:


57

それはおそらく間違いであり、そのチュートリアルの1つの例にのみ見られます。他のすべての例copytruncateにはcreateオプションがありません。また、logrotate manページには、実際には無視されると記載されています。

copytruncate

古いログファイルを移動してオプションで新しいログファイルを作成する代わりに、コピーを作成した後、元のログファイルをゼロサイズに切り捨てます。一部のプログラムにそのログファイルを閉じるように指示できないため、以前のログファイルへの書き込み(追加)を永久に続ける場合に使用できます。ファイルのコピーと切り捨ての間には非常に短いタイムスライスがあるため、一部のログデータが失われる可能性があることに注意してください。このオプションを使用すると、古いログファイルがそのまま残るため、作成オプションは効果がありません。


に関してはmaxage、たとえば、いくつかのローテーション期間(日/週/月)の間空になる可能性のあるログファイルの場合に役立つと思います-を使用するとnotifempty、空のログファイルはローテーションされないので、古いローテーションされたファイルをまだ保持できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.