我有一个脚本提供连续登录(例如每秒 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