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

Hug*_*ugh 61 linux logging tail

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

tail -f tool.log在机器上运行以监视日志,但在午夜时tool.log重命名为tool.log.<date>tail继续观看重命名的文件。

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

这样的东西存在吗?如果没有,我可以为此用 Python 编写自己的代码。

Tob*_*ght 93

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

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

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

--retry
即使文件无法访问或变得无法访问,也要继续尝试打开文件;按名称跟随时很有用,即,与--follow=name

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

  • GNU --F如上所述
  • Mac OS X , FreeBSDNetBSD - 具有-F相同效果的类似选项
  • OpenBSD --f就够了(如果文件被替换(即inode号改变),tail会重新打开文件并继续)
  • Solaris - 无等价物
  • Busybox --F在最新版本中可用,但必须编译ENABLE_FEATURE_FANCY_TAIL(默认情况下未编译)


Ole*_*den 55

替代方法是tail -F命令。

-F选项隐含--follow=name--retry选项,因此即使文件已被删除并再次创建,tail 也会监视您的文件。


VL-*_*-80 5

由于您要求替代

less实用程序可能是tail -F.

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

这将为您提供与tail -F.