文件名后面跟着“tail -f”的替代方法

文件名后面跟着“tail -f”的替代方法

我使用定时轮换文件记录器生成了一些日志。这会将日志记录到名为的文件中tool.log,并在午夜将其移动到tool.log.<date>并启动新的tool.log

tail -f tool.log在机器上运行了一个来监视日志,但是在午夜,当tool.log重命名为时tool.log.<date>tail继续监视重命名的文件。

我希望有一个类似于的工具tail,但会继续监视名为的文件tool.log,而不是跟踪inode。

有类似的东西吗?如果没有,我可以用 Python 编写自己的程序来实现这个目的。

答案1

一些实现tail有这个选项;这里是 GNU tail 手册页中的描述:

-F
与...一样--follow=name --retry

-f--follow[ ={姓名|描述符}]
随着文件的增长输出附加数据;-f--follow--follow=descriptor是等效的

--retry
即使文件不可访问,也继续尝试打开它;当按名称跟踪时很有用,即--follow=name

由于 POSIX 未指定此选项,因此您不能在任何地方依赖它。一些已知的实现:

  • GNU--F如上所述
  • Mac OS XFreeBSD网络BSD- 有类似-F选项,效果相同
  • OpenBSD--f就足够了(如果文件被替换(即 inode 编号发生变化),tail 将重新打开该文件并继续)
  • 索拉里斯- 没有同等
  • 忙碌箱--F在较新版本中可用,但必须进行编译ENABLE_FEATURE_FANCY_TAIL(默认情况下不进行编译)

答案2

替代方案就是tail -F命令。

-F选项暗示--follow=name带有--retry选项,因此即使文件已被删除并再次创建,tail 也会监视它。

答案3

既然你已经要求选择

less实用程序可以成为的替代品tail -F

它必须按如下方式运行:less --follow-name filename.log然后按Shift+ F

这将为您带来与 相同的结果tail -F

答案4

航航是另一个跟随文件名的奇妙工具。

您还可以将它指向一个目录,它将跟踪该目录中的所有文件,此外还有各种其他简洁的功能。

相关内容