継続的なログイン(たとえば、1秒あたり2〜3ページ)を提供するスクリプトがあります。下に裏地を付け加えて使用しました。
sh myscript.sh > /home/user/mylog
ファイルを圧縮して100MBに達すると、新しいファイルを生成する別のスクリプトを実行しています。
gzip /home/user/mylog;touch /home/user/mylog
gzip
しかし、コマンド間でいくつかのログが失われているようです。touch
ログの損失を防ぐためのベストプラクティスを提案できる人はいますか?
ベストアンサー1
ファイルを作成しながら圧縮するのではなく、邪魔にならない場所に移動して静的ファイルを圧縮します。
mv /home/user/mylog /home/user/mylog.0; gzip /home/user/mylog.0
スクリプトの実行時にログファイルが消えた場合は、独自に生成する必要があるため、手を触れる必要はありません。
テストは次のとおりです。このスクリプトを実行してください...
for (( ; ; )); do echo "123" >> test.log; sleep 1; done
次に、ファイルを新しい名前に移動します。
mv test.log test.log.0
スクリプトがまだ実行中であると仮定すると、新しいtest.logが自動的に生成されます。
Whileループでこれを試してみてください。私がテストしたときに効果がありました。
while true;do
exec 3>&1 1>>time.logger 2>&1
date;
#other stuff...
done