如何跟踪日志文件并在最新日志文件更改日期时继续跟踪它?

如何跟踪日志文件并在最新日志文件更改日期时继续跟踪它?

我正在使用 RHEL 4。

tail -F file_name*.log当时间翻转到 0000 时,法线不会更新。

这是我到目前为止在网上搜索的尝试,两者都尝试使用嵌套tail

tail -F $(ls -tr file_name*.log | tail -n 1)

tail -F $(fine . -maxdepth 1 -type f -printf "%T@ %p\n" | sort -n | tail n 1 | cut -d' ' -f 2-)

这些都不会翻转到新文件。普通的旧tail -F file_name*.log方法在我的小测试用例中有效(而上面的 2 个则无效),但当我跟踪真实的日志文件时它不起作用。

答案1

tail监视单个文件,或最多监视启动时确定的一组文件。在命令中tail -F file_name*.log,首先 shell 扩展通配符模式,然后tail在当时存在的任何文件上调用。

要监视基于通配符的一组文件,您可以使用多尾

multitail -iw 'file_name*.log' 1

答案2

这不会(不能)工作 - 您用来确定最新文件的子 shell 只会执行一次。 glob 不起作用,因为 shell 仅对通配符求值一次。

处理这个问题的一种方法是使用“watch”来运行整个过程,但这会每隔很多秒就破坏输出。

答案3

您可能必须写一些东西来跟踪尾部。或者将您的系统配置为不在午夜滚动日志(或该日志)。无论哪种方式,尾部日志文件的文件句柄都会在滚动时重置。

相关内容