ソフトウェアを作成していますが、プロセスがlogrotateなどからSIGHUP信号を受け取ったら、ログファイルを再ロードしたいと思います。問題は、logrotateがローテーションされたログファイルの圧縮を開始する前にアプリケーションがどのくらいの時間を使用できるかということです。
私が見つけたマンページとすべての参照には、アプリケーションがログを「すぐに」再ロードする必要があることが示されていますが、たとえば、これは1ミリ秒以内に完了するのか、1秒以内に完了するべきかについては言及されていません。
答え1
ただ安全のために:まったくそうではありません。
Logrotate は、postrotate コマンドが完了するとログファイルが記録されなくなったと仮定します。 「ログファイルを閉じるのに時間がかかることがある」を処理する方法は2つあります。
- logrotate オプションは
delaycompress
次まで圧縮ステップを延期します。Nextログ回転呼び出し。これを行うと、次のlogrotateの実行に長い時間がかかることがあります(これを行うのは非常に悪い考えですが)。 - デーモンにログファイルを閉じて再度開くようにコマンドラインツールを作成して、このコマンドが実行されていることを確認できます。いいえデーモンは、すべてのログファイルが閉じられたことを確認するまで終了します(該当しませんが、ファイルが再び開くのを待つ必要はありません)。その後、
postrotate
logrotateセクションでこのコマンドラインツールを使用できます。