Logrotateをシミュレートするシェルスクリプト

Logrotateをシミュレートするシェルスクリプト

ファイルを作成するシステムがあり、ログ/var/tmp/log/my.logファイルが1 KBの制限に達すると、my.logがmy.log.1になり、my.log.1がmy.logになるようにログファイルを回転させるシェルスクリプトを作成しようとしています。 2などをmy.log.10まで続けてから、他のファイルを削除します。

私はスクリプトの一部を得ましたが、ファイル名を変更する方法がわかりません。

#!/bin/bash file_size=`du -b /var/tmp/log/my.log` if($file_size -gt 1024) do mv my.log my.log.1 done fi

my.logが1KBの制限に達すると、my.logをmy.log.1に移動し、my.log.1をmy.log.2に移動し、後でmy.logをmy.logに移動できます。 2番目に1KBに達する式に続く。 logrotateを使わずにこれを行う方法はありますか?

ベストアンサー1

次のように回転を実行できます。

for i in {9..1}; do
    if [[ -f my.log.${i} ]]; then
        mv -f my.log.${i} my.log.$((i+1))
    fi
done
mv -f my.log my.log.1
touch my.log

これにより、最大my.log.10まで10個の循環ログが維持され、スクリプトが10回以上循環すると、各循環ごとに新しいログで上書きされます。

アーカイブするログの数に応じて、forループの範囲を下げるか増やす必要があります。

おすすめ記事