ログファイルは特定のサイズを超えて大きくすることはできません。なぜ?

ログファイルは特定のサイズを超えて大きくすることはできません。なぜ?

多くのログファイルを作成するCentOS 6.0 64ビットで実行されるJavaベースのWebアプリケーションがあります。 、および他の多くのオプションをlogrotate使用して、いくつかのファイルを毎日交換してください。dailycopytruncate

そのような特定のログファイルの1つは、正確に「102400000」バイトで成長を停止しました。プロセスは引き続き正常に動作します。しかし、当時のログには何も記録されませんでした。

stat"102400000"バイトサイズに達した後、変更時間が変更されたことを確認するためにファイルを操作しましたが、変更されませwatchんでした。ファイルには何も起こりません。それはただ同じままです。同じディレクトリ内の他のログファイルに書き込みを続けます。

他のStackExchangeの質問で言及されているものここ申請しないでください。上記のulimitオプションが設定されていますが、何も設定されていないことを確認して、もう一度確認しました。

実行すると、strace -f -p PIDプロセスは書き込みを試みますが、「ファイルが大きすぎます」および「ファイルサイズ制限を超えました」というメッセージが表示されます。

[pid  5679] write(1, "\n\n\n\n\n23-01-2013 12:00:46:921  Av"..., 128) = -1 EFBIG (File too large)
[pid  5679] --- SIGXFSZ (File size limit exceeded) @ 0 (0) ---

ファイルサイズにこれらの制限を適用する理由をどのように見つけることができますか?同じディレクトリにある他のログファイルはサイズが非常に大きく(サイズが1 GB以上)、これらの問題はありません。

答え1

したがって、(あなたの意見に従って)最終的に(ulimitおよびSIGXFSZEFBIGログサイズが大きくなることができない理由を説明します。

以下で確認できます。

grep 'Max file size' "/proc/$pid/limits"

$pidファイルに書き込むJavaプロセスのIDはどこにありますか?)

これは、プロセス自体(checkまたはstrace出力setrlimit)によって設定または開始されたラッパースクリプトまたはJavaアプリケーション(照会)によって設定できます。ulimitjavaulimit -f 100000

関連情報