test.sh
#!/bin/bash
echo "Hello World"
test2.sh
#!/bin/bash
while true
do
sh test.sh >> /script_logs/test.log &
done
Logrotateを実装してログファイルのサイズを制御したいので、上記のような状況でlogrotateを実装するにはどうすればよいですか?
#!/bin/bash
touch /script_logs/test.log
MaxFileSize=2048
while true
do
sh test.sh >> /script_logs/test.log
#Get size in bytes**
file_size=`du -b /script_logs/test.log | tr -s '\t' ' ' | cut -d' ' -f1`
if [ $file_size -gt $MaxFileSize ];then
timestamp=`date +%s`
mv /script_logs/test.log /script_logs/test.log.$timestamp
touch /script_logs/test.log
fi
done
問題の原因となる可能性があるため、「&」を削除しました。
savelog
の使い方は?
これは、debianとRH、そして私が知っているほとんどすべてのLinuxディストリビューションで利用できます。これは/ bin/shシェルスクリプトなので、他のUNIXでも実行できます。
例えば何かをtest.log
に書き込む前に、savelog -n -c 7 test.log
を実行します。これにより、test.logの最新の空でない7つのバージョンが保持されます。デフォルトでは、ローテーションされたログが圧縮されます(ただし、-l
で無効にできます)。
必要に応じて、test.log
のサイズを確認し、特定のサイズを超えている場合はsavelog
のみを確認できます。
logrotee を今週末に書きました。 @JdeBPの multilog
についてのすばらしい答え を読んだ場合、おそらく私はそうは思いません。
私はそれが軽量で、その出力チャンクを次のようにbzip2できることに焦点を当てました:
verbosecommand | logrotee \
--compress "bzip2 {}" --compress-suffix .bz2 \
/var/log/verbosecommand.log
ただし、まだ完了していないことがたくさんあります。
受け入れられた回答 、BusyBoxヒントにコメントを追加することはまだできないので、du
には-b
国旗:
du /var/log/file | tr -s '\t' ' ' | cut -d' ' -f1