ファイルを作成するシステムがあり、ログ/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ループの範囲を下げるか増やす必要があります。