【问题标题】:Tail Sampling Logs尾部采样日志
【发布时间】:2011-11-23 16:44:17
【问题描述】:

我有一个进程需要对不断增长的日志文件进行定期处理。现在,我执行此操作的方式非常简单(如果您真的好奇,我将包含 bash 脚本)。

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

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

【问题讨论】:

    标签: bash tail


    【解决方案1】:

    通过“移动旧样本”,我假设您的意思是通过移动当前文件并用新文件替换它来旋转文件。

    如果是这样,那么您可以为tail 使用--follow=name 选项而不是-f。这按名称而不是文件描述符跟随文件,即使文件被替换,它也允许它继续。然后,您可以让 tail 运行,同时替换文件,不会错过任何条目。

    对于更强大的方法,还包括--retry,或者简单地使用-F,这意味着--follow=name --retry

    来自手册页:

    -f, --follow[={name|descriptor}]

    随着文件的增长输出附加的数据; -f--follow--follow=descriptor 是等价的

    --retry

    继续尝试打开文件,即使它在 tail 启动时无法访问或稍后变得无法访问 - 仅适用于 -f

    -F

    --follow=name --retry

    【讨论】:

    • 我必须同意!这非常有用。 +1 问题和答案!
    • 不完全是我的想法,但仍然有效。谢谢!
    猜你喜欢
    • 2015-05-19
    • 2014-09-07
    • 1970-01-01
    • 1970-01-01
    • 2021-11-05
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    • 2023-02-09
    相关资源
    最近更新 更多