Logrotateとファイルを開く


21

logrotateは開いているファイルをどのように処理しますか?logrotateは、プロセスが開いたファイルを回転できますか?

回答:


7

Roryが説明したように、logrotateからの信号を受け入れないアプリケーションでは、いくつかの方法を使用します。

  1. copytruncateオプションを使用する
  2. post-rotateステートメントを追加して、サービスを再起動します

どちらを使用するかの決定は、ログファイルのサイズとシームレスログの必要性の両方に依存します。それはあなた自身のリスク分析になります。ただし、例を挙げると、実際にcopytruncateを使用する必要がある特定のログで、回転後の再起動を使用します。ただし、ファイルは複数のギグであることが多く、コピーには十分な時間がかかるため、毎晩1〜2秒は失われることが望ましいでしょう。


手遅れになってすみませんが、この問題を探している人に時間を節約できると思います。これを解決する別のアプローチをご覧ください。unix.stackexchange.com/a/122942/189725
ビクター

17

私は次のものが欲しいかもしれませんが、それでもトピックに関する誰の専門知識にも興味があります:

copytruncate
              Truncate  the original log file to zero size in place after cre‐
              ating a copy, instead of moving the old log file and  optionally
              creating  a new one. 

1
「cp something.log something.log.1;:> something.log」を実行するようなもので、ファイルは空になりますが、そのファイルハンドルは破損しません。問題は、2つのコマンド間の時間です。ログの行を失う可能性があります
半径

5

logrotateは、プロセスに正しい信号を送信して、ログファイルを再度開くように指示します。apacheやmysqlのようなものをそのまま使用できます。

これは、Apacheのpostrotateスクリプトで確認できます。独自のデーモンがあり、logrotateを使用したい場合は、特定のシグナルをリッスンし、ログファイルを再度開くようにしてください。

プログラムを変更できない場合は、デーモンにログを自動的にフラッシュする方法があるかどうかを確認できます。または、サーバーを停止するprerotateと、サーバーを再起動するpostrotateを追加します。


さて、私は開発者にそれをさせるとは思わないが、標準が何であるかを知ってうれしい:
カイルブラント
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.