Linux 如何使用tail-f跟踪最新的日志文件?

Linux 如何使用tail-f跟踪最新的日志文件?,linux,bash,command-line,Linux,Bash,Command Line,我有一个dir,它为每次运行保存一个新的日志文件,因此我使用以下命令跟踪最新的日志文件: tail -f $(ls -t | head -1) 因此,我的问题是,是否有任何方法可以从一个文件跳到下一个文件,是否有一个更新的日志文件可用,而不必停止最新的tail-f并重新运行它?您可以尝试以下操作: # setup a link that points to the youngest file $ for f in *; do [[ ( ! -f last ) || ( "

我有一个dir,它为每次运行保存一个新的日志文件,因此我使用以下命令跟踪最新的日志文件:

tail -f $(ls -t | head -1)

因此,我的问题是,是否有任何方法可以从一个文件跳到下一个文件,是否有一个更新的日志文件可用,而不必停止最新的
tail-f
并重新运行它?

您可以尝试以下操作:

# setup a link that points to the youngest file    
$ for f in *; do [[  ( ! -f last )  || ( "$f" -nt last) ]] && ln -sf "$f" last; done
# monitor that file continuously by filename
$ tail -F last
在另一个shell中运行以下命令

while :; for f in *; do [ "$f" -nt last ] && ln -sf "$f" last; done
您也可以在单个命令中运行此命令,如下所示:

while :; do for f in *; do [[  ( ! -f last )  || ($f -nt last) ]] && ln -sf $f last; done; done & tail -F last

您可以尝试以下内容:

# setup a link that points to the youngest file    
$ for f in *; do [[  ( ! -f last )  || ( "$f" -nt last) ]] && ln -sf "$f" last; done
# monitor that file continuously by filename
$ tail -F last
在另一个shell中运行以下命令

while :; for f in *; do [ "$f" -nt last ] && ln -sf "$f" last; done
您也可以在单个命令中运行此命令,如下所示:

while :; do for f in *; do [[  ( ! -f last )  || ($f -nt last) ]] && ln -sf $f last; done; done & tail -F last

GNU版本支持
尾部的
-F
标志。(它位于GNU CoreUtils集合中。)

显然,IBM已经为提供了下载,而且显然它包含了一个支持
-F
选项的
tail
版本

你可以把它和这个问题的其他答案结合起来。(例如,使用带有定期刷新的符号链接的
tail-F

或者,如果这些解决方案都不适合您,那么您可以获得GNU CoreUtils源代码1,并修改
tail
的源代码以执行您想要的操作,然后自己在AIX上构建它



1-我还没有检查过,但我希望IBM开发人员将对CoreUtils所做的任何更改做出贡献,以使其在AIX上工作。如果没有,他们有义务根据您的要求提供源代码。无论哪种方式,获得与AIX兼容的源代码都不成问题。

GNU版本中支持
尾部的
-F
标志。(它位于GNU CoreUtils集合中。)

显然,IBM已经为提供了下载,而且显然它包含了一个支持
-F
选项的
tail
版本

你可以把它和这个问题的其他答案结合起来。(例如,使用带有定期刷新的符号链接的
tail-F

或者,如果这些解决方案都不适合您,那么您可以获得GNU CoreUtils源代码1,并修改
tail
的源代码以执行您想要的操作,然后自己在AIX上构建它



1-我还没有检查过,但我希望IBM开发人员将对CoreUtils所做的任何更改做出贡献,以使其在AIX上工作。如果没有,他们有义务根据您的要求提供源代码。无论如何,获得与AIX兼容的源代码应该不是问题。

@StephenC谢谢你的回答,我没有看到这个问题。不幸的是,我的文件有不同的名称,所以这不会像它看起来那样工作。此外,我没有a-F选项,因为它似乎。你有别的选择吗?PS:如果这不适合这里,我很高兴将其移动到SU,但我发现了类似的问题,因此我认为它可能适合您使用的是什么版本的tail?文件名看起来如何?您必须从哪里进行选择?@MauriceNino您是否可以访问
inotify
inotifywait
?@StephenC感谢您的回答,我没看到那个问题。不幸的是,我的文件有不同的名称,所以这不会像它看起来那样工作。此外,我没有a-F选项,因为它似乎。你有别的选择吗?PS:如果这不适合这里,我很乐意将其转移到SU,但我发现类似的问题,所以我想它可能适合你使用的是什么版本的tail?文件名看起来如何?你可以从中选择吗?@MauriceNino你可以访问
inotify
inotifywait
?GNU工具通常在AIX上直接编译;至少几年前我试过的时候是这样的。无论如何,您链接的页面也提供了SRPM。感谢您确认这一点。GNU工具通常在AIX开箱即用的环境下干净地编译;至少几年前我试过的时候是这样的。无论如何,你链接的页面也提供了SRPM。谢谢你的确认。