web-dev-qa-db-ja.com

ログファイルへの継続的な書き込みの制限

4GBの内部フラッシュストレージを備えたBeableBoneBlackで実行されているDebianを使用しています。

私のプログラムは、>>で作成したログファイルに毎分、毎日、継続的に書き込み/追加しています。

このファイルのサイズに制限はありますか?このファイルは、メモリがなくなるまで継続的に書き込まれますか?その場合はどうなりますか?

ファイルを循環させて、数日後に最初から書き始めるようにするにはどうすればよいですか?

1
Engineer999

このファイルのサイズに制限はありますか?

ファイルシステムが制限を課さない限り、そうではありません。最新のファイルシステムを備えた4GBフラッシュでは、答えは、最大ファイルサイズに達するずっと前にスペースが不足することです。いいえ、制限はありません。

このファイルは、メモリがなくなるまで継続的に書き込まれますか?

はい

それではどうなるでしょうか。

プログラムはファイルへの書き込みに失敗します。システム上のすべてのプログラムは、そのファイルシステム上のファイルの書き込みに失敗します。その失敗により、多くのプログラムがサイレントにフォールオーバーします(ログにスペースがないため、フォールオーバーした理由をログに記録できません)。

それは本当に悪いことであり、通常、すべてが再び機能する前に、スペースを空けてから再起動する必要があります。

一部の人々は、ログがシステムを強制終了しないように、独自のパーティションに/var/logを保持することを推奨しています。

ファイルを循環させて、数日後に最初から書き始めるようにするにはどうすればよいですか?

これが「ログローテーション」のテーマです。幸い、Debianにはログローテーションツールが組み込まれています。 logrotate のマニュアルを読むことをお勧めします。このツールは定期的にログファイルを移動し、新しいログファイルを開始します。また、スペースが不足しないように、古いログファイルを自動的に圧縮し、最終的に削除します。プログラムの構成ファイルを/etc/logrotate.d/に追加するだけです。

注:プログラムがログファイルを閉じない場合は、構成ファイルでcopytruncate設定を使用する必要がある場合があります。ただし、必要な場合にのみこれを使用してください。

4
Philip Couling