Linuxサービスで生成されるログファイルのサイズを制限する方法

Linuxサービスで生成されるログファイルのサイズを制限する方法

Linuxサービスは巨大なログファイルを生成しています。

現在私はcronを使って制御しています(X分ごとに最後のX行に減ります)。

*/5 * * * * root  echo "$(tail -n 1000 /var/log/XXX/logger_file.log)" > /var/log/XXX/logger_file.log

これをよりきれいにするための別の方法はありますか?

文字クリッピングがサイズベースの場合(つまり、最後の1024バイトが保持されている場合)、クリッピング後に最初の行が破損する可能性があります。

もちろん、サービス自体を静かに変更することはできません。

答え1

ログの回転を試してみましたか?man logrotate

以下は参考になるガイドです。logrotateを使用してログファイルを管理する方法

答え2

curtailは、次のコマンドを使用してプログラムの出力サイズを制限し、出力の最後のXKB(この場合は200 MB)を保持します。

プログラムの実行縮小 -s 200M myprogram.log

https://github.com/Comcast/Infinite-File-Curtailer

注:私は上記のリポジトリの管理者です。ソリューションを共有するだけです。

関連情報