打开一个目录并使用“tail -f”让它自行更新

打开一个目录并使用“tail -f”让它自行更新

类似于我的上一个问题:打开一个文本文件并让它自行更新;有没有办法我可以做同样的事情,但是对于一个文件夹?

由于我有日志文件夹,我可以tail -f与文件夹一起使用吗?

IE

$ tail -f /tmp/logs/

我知道这行不通,但是有其他选择吗?

我使用的是 RHEL 5.10

答案1

是的,还有另一种选择,经过一番研究,我发现您可以使用:

$ watch "ls -l"

您需要位于您想要的文件夹中watch

另外,您可以tail -10在最后使用:

$ watch "ls -l | tail -10"

该命令ls每 2 秒键入一次,并将输出过滤到最后 10 个文件。

如果您阅读了参考链接,它有一些很棒的提示,如果您不记得上面的命令,那么您可以将以下内容添加到您的 .bashrc 文件中:

alias taildir='watch "ls -l | tail -10"'

因此您只需键入即可,taildir而无需再次写出完整的命令。

参考:如何跟踪目录

答案2

我不确定你到底想要什么。也许你需要inotifywait来自inotify-tools包(在 Ubuntu 中)。不幸的是,这是仅限 Linux 的解决方案。例如:

$ inotifywait -m -e create -e modify -r /var/log
Setting up watches.  Beware: since -r was given, this may take a while!
Watches established.
/var/log/ CREATE test-for-inotify1.txt
/var/log/upstart/ CREATE test-for-inotify2.txt
/var/log/ MODIFY test-for-inotify1.txt
/var/log/ MODIFY auth.log
/var/log/ MODIFY syslog
/var/log/ MODIFY auth.log

请参阅man 1 inotifywait参考资料 了解更多观看活动和选项。


添加:

另外,如果您只需要监视某些特定文件,您可以使用tail -f多个文件名:

$ tail -f 1.txt 2.txt 3.txt
==> 1.txt <==

==> 2.txt <==

==> 3.txt <==

==> 1.txt <==
new string in 1.txt

==> 3.txt <==
add string to 3.txt

==> 2.txt <==
And to 2.txt
^C

答案3

这个命令不需要watchor怎么样inotify

ls -drt /var/log/* | tail -n5 | xargs tail -F

tail -n5在 中查找 5 个 (-n5) 个最常更新的日志/var/log,然后对这些日志文件进行多文件跟踪。但是,如果您需要实时监控所有文件,则可以删除此选项。

参考

关注最近更新的日志文件

相关内容