对新创建的未知名称的文件执行 tail -f

对新创建的未知名称的文件执行 tail -f

我有一个程序,每次运行时都会生成一个新的日志文件。为了观察发生了什么,我想查看tail -f日志 - 唯一的问题是我实际上事先不知道文件名。

那么,有没有办法跟踪所有与特定 (shell glob) 模式匹配的文件?我想我可以轻松编写类似这样的脚本,但我想知道是否已经有解决方案了。

答案1

tail我认为如果不知道名称的话,没有直接的方法可以执行该操作- 如果您知道名称,那么tail --follow=name --retry它将起作用并且会等待文件出现然后开始跟踪它。

我建议编写一个小 shell 脚本,用于inotifywait监视文件的出现,然后开始tail -f跟踪它。

答案2

如果您事先不知道文件名:

  1. 决定一个文件名,例如foo.log
  2. 查看该文件:(tail -F foo.log不管 foo 是否存在)
  3. 使用工具监视目录中的文件更改并运行命令

对于该命令,可以:

  • 移动新文件以覆盖 foo.log mv the_new_file_which_appeared foo.log(如果应用程序日志打开一次,这将正常工作)
  • 或者只是符号链接:ln -s the_new_file_which_appeared foo.log- 并且尾部应该捕获它。

为了正确地监视目录(步骤 3),您需要一个可配置的、智能的工具。

就我个人而言,我会使用警卫守卫::进程

实际上,Guard 并不比使用 shell 脚本(它是 Linux 上 inotify 之上的薄层)重很多,并且设置起来非常快速和容易。

相关内容