我想监控 Linux 中多个日志文件的变化。基本上,我想看看 20 个文件中哪个日志文件更新了。我检查了 multitail 工具,但它的 UI 最多只能处理 5 个文件。
任何帮助都将受到赞赏。
答案1
对于您提出的建议,根据具体情况有很多种方法可以实现。
轻量级:查看inotify
更多 fixed(守护进程):(fam
文件修改监视器)
或者如果这不是你常做的事情:
或者一次性:watch -d -n 1 ls -t
在您想要监视的目录中(仅在平面目录中,不是递归,但您可以修改它来执行此操作) - 然后对结果运行 tail。
答案2
把事情简单化。 tail -f
例如:
tail -f file1 file2 file3 file4 file5
答案3
如果您愿意从命令行执行此操作,则可以使用类似这样的脚本来执行此操作
# When this exits, exit all back ground process also.
trap 'kill $(jobs -p)' EXIT
# iterate through the each given file names,
for file in "$@"
do
# show tails of each in background.
tail -f $file &
done
# wait .. until CTRL+C
wait
将此文件保存为 multitail.sh 或任何你喜欢的名称然后像这样执行
./multitail.sh file.txt file1.txt file2.txt file3.txt file4.txt file5.txt 我刚刚运行了这个,它成功运行了 6 个文件,缺点是它只告诉你哪些文本发生了变化,而不是文本/日志文件的文件名。我以前用过这个。有关更多信息等,请查看此处http://www.thegeekstuff.com/2009/09/multitail-to-view-tail-f-output-of-multiple-log-files-in-one-terminal/ 这个人写得很好,希望这能有所帮助
答案4
如果您确实只想查看哪个文件被更改了,只需使用正确的排序选项列出它们:ls -alt file1 file2 file3
这将在顶部显示最近更改的文件。
您甚至可以使用动态显示:watch -n 1 ls -alt file1 file2 file3