使用方法>>ログファイルサイズの制限

使用方法>>ログファイルサイズの制限

記録されるログファイルのサイズを>>200MBに制限する方法は?

$ run_program >> myprogram.log

答え1

アプリケーション(例run_program)がログファイルサイズの制限をサポートしていない場合は、外部アプリケーションまたはスクリプトを使用して通常のループでファイルサイズを確認できます。

また、使用することができますlogrotate(8)ログを回転させるためにsizeその目的に使用できるパラメータがあります。

これにより、指定されたサイズに達するとログファイルが回転します。サイズはバイト(デフォルト)、キロバイト(sizek)、またはメガバイト(sizem)で指定できます。

答え2

プログラムがこの制限より大きい追加ファイルを書き込む必要がない場合は、カーネルにこの制限を知らせることができますulimit。コマンドを実行する前に、次のコマンドを実行して、現在のシェルセッションで実行されているすべてのプロセスのファイルサイズ制限を200 MBに設定してください。

ulimit -f $((200*1024))

これによりシステムが保護されますが、ファイルを作成するプログラムに干渉が発生する可能性があります。 〜のようにEyaziciが提案しました。logrotate特定のサイズまたは期間に達したら、ログファイルをクリーンアップするように設定することをお勧めします。古いデータを破棄したり、一定期間にわたって一連の圧縮ファイルとして保存したりできます。

答え3

新しいファイルシステムイメージを作成し、ループデバイスを使用してそれらをマウントしたら、そのファイルシステムにログファイルを配置できます。

dd if=/dev/zero of=./200mb.img bs=1024 count=200000 # create new empty 200MB file
mkfs.ext2 200mb.img # or ext3, or whatever fits your needs
mkdir logs
sudo mount -t ext2 -o loop 200mb.img logs # only root can do '-o loop' by default
run_program >>logs/myprogram.log

メモリが十分な場合は、tmpfsファイルの代わりに使用することもできます。

答え4

パッケージに役立つapache2-utilsユーティリティがありますrotatelogs

要約:

ログの回転 [ -l ] [ -Lリンク名][-pプログラム] [ -f ] [ -t ] [ -v ] [ -e ] [ -c ] [ -nファイル数] ログファイル回転時間|ファイルサイズ(B|K|M|G) [オフセット]

例:

your_program | rotatelogs -n 5 /var/log/logfile 1M

完全なマニュアルを読むことができます。このリンク

関連情報