syslog
ここでは、ファイルをより小さな塊に分割しようとしています。これを行うには、次のスクリプトを使用します。
#!/bin/bash
date=$(date +%Y%m%d_%H%M)
cp /path/to/sys.log /path/to/chuck/file.log
cat /dev/null > /path/to/sys.log
cp /path/to/chuck/file.log /path/to/chuck/file_"$date".log
cat /dev/null > /path/to/chuck/file.log
スクリプトは5分ごとに実行され、それをsyslog
より小さなログに分割して追加の処理に使用します。問題は、元のファイルとチャンクファイル
にいくつかの履歴がありません。syslog
この問題を解決する方法はありますか?
ここでチャンクファイルは約2GBです。syslog
成長しています。
ベストアンサー1
警告する:これは小さな最大サイズとimfile
入力モジュールがあったため、バージョン8.2002では完全には機能しませんでした。一部のデータはログファイルから失われますが、ドキュメントでは通常小さなバッファサイズはサポートされていないことを警告します。
rsyslogを使用すると、ログファイルが特定のサイズを超えると回転する組み込みメカニズムが提供されます。あなたはただ チャンネル、ファイル名、最大サイズ、サイズを超えた場合に実行するスクリプト名を指定します。それから 使用 ファイル名の代わりにフィルタのチャネル名です。
たとえば、ファイル/home/me/rotatescript
が作成された50Mibytesを超えるとスクリプトを実行するには、/var/log/mylog
次の名前のチャンネルを作成しますmylogrotatechan
。
$outchannel mylogrotatechan,/var/log/mylog,52428800,/home/me/rotatescript
そして*.* /var/log/mylog
に交換
*.* :omfile:$mylogrotatechan
文書化されていないRainerScript構文を使用する最新のソース(2023年1月)には、テストスクリプトもあります。
action(type="omfile" file="/var/log/mylog" rotation.sizeLimit="52428800"
rotation.sizeLimitCommand="/home/me/rotatescript")
一般的なスクリプトは次のとおりです。
#!/bin/bash
mv /var/log/mylog /var/log/mylog.$(date +%Y%m%d.%H%M%S)