记录到新文件以继续运行脚本

记录到新文件以继续运行脚本

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

相关内容