类似于我的上一个问题:打开一个文本文件并让它自行更新;有没有办法我可以做同样的事情,但是对于一个文件夹?
由于我有日志文件夹,我可以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
这个命令不需要watch
or怎么样inotify
?
ls -drt /var/log/* | tail -n5 | xargs tail -F
tail -n5
在 中查找 5 个 (-n5) 个最常更新的日志/var/log
,然后对这些日志文件进行多文件跟踪。但是,如果您需要实时监控所有文件,则可以删除此选项。
参考