尾部采样日志

时间:2011-11-23 16:44:17

标签: bash tail

我有一个进程需要对不断增长的日志文件进行定期处理。现在,我这样做的方式非常简单(如果你真的很好奇,我会包含bash脚本)。

  • 启动tail -n0 -f $ FILE
  • 每次迭代:
    • 杀死尾巴
    • 移动旧样本
    • 启动新尾巴

这解决了没有任何重叠的问题,但我担心我可能错过的1或2行。有没有更好的方法来避免重叠(以及“下”圈)?

1 个答案:

答案 0 :(得分:3)

通过"移动旧样本",我认为你的意思是通过移动当前文件并用新文件替换它来旋转文件。

如果是,那么您可以使用--follow=name的{​​{1}}选项代替tail。这遵循文件名而不是文件描述符,即使文件被替换也允许它继续。然后,您可以在替换文件时保持-f正常运行,并且不会错过任何条目。

对于更强大的方法,还包括tail,或者只使用隐含--retry的{​​{1}}。

从手册页:

  

<强> -F

     
    

随着文件的增长输出附加数据; --follow=name --retry-f, --follow[={name|descriptor}]-f等效

  
     

<强> --follow

     
    

继续尝试打开文件,即使它在尾部启动时无法访问或者以后变得无法访问 - 仅对--follow=descriptor

有用   
     

--retry

     
    

-f

相同