【问题标题】:Tail command not tailing the newly created files under a directory in linux尾命令不尾随linux目录下新创建的文件
【发布时间】:2020-06-10 07:40:13
【问题描述】:

我正在尝试使用以下命令递归地跟踪目录下存在的所有日志文件及其子目录

shopt -s globstar
tail -f -n +2 /app/mylogs/**/* | awk '/^==> / {a=substr($0, 5, length-8); next} {print a":"$0}'

输出如下:

/app/mylogs/myapplog10062020.log:Hi this is first line
/app/mylogs/myapplog10062020.log:Hi this is second line

这很好,但问题是当我在tail 命令上方触发后在/app/mylogs/ 目录下添加一个新日志文件时。 tail 不会考虑该新文件。 有没有办法做到这一点?

【问题讨论】:

  • 您需要将新文件作为参数传递给 tail 命令。检查inotifywait 实用程序

标签: linux bash shell sh tail


【解决方案1】:

当您启动tail 进程时,您会向它传递一个(固定的)tail 应该跟随的文件列表,正如您在 tail 手册页中所看到的那样。这与“查找”不同,您可以在其选项中传递文件名模式。进程启动后,tail 无法知道您突然也希望它跟随另一个文件。

如果您想拥有这样的功能,您必须编写自己的tail 版本,例如传递一个要扫描的目录,并定期检查目录内容是否更改,或者使用服务例如inotify 会收到目录更改的通知。

【讨论】:

  • 谢谢@user1934428。我会试试的
猜你喜欢
  • 1970-01-01
  • 2017-12-12
  • 1970-01-01
  • 1970-01-01
  • 2017-09-23
  • 1970-01-01
  • 2018-07-30
  • 1970-01-01
  • 2017-12-22
相关资源
最近更新 更多