推荐使用 multitail 一站式分屏查看多目录日志,支持实时跟踪、颜色高亮、过滤与合并视图;也可用 tail -f + 进程替换加前缀标识来源,或结合 tmux 分窗管理、inotifywait 自动响应新日志文件。

用 tail -f 同时监控多个业务目录下的日志文件,关键不是“一次 tail 多个路径”,而是通过组合工具实现真正的实时、分屏、可区分的动态追踪。
用 multitail 一站式分屏查看多目录日志
这是最直接、最实用的方案。multitail 支持同时跟踪多个文件、颜色高亮、过滤、合并视图,且原生适配不同业务目录结构。
- 安装:
sudo apt install multitail(Debian/Ubuntu)或sudo yum install multitail(CentOS/RHEL) - 监控多个业务目录下的最新日志(例如
/var/log/app1/、/var/log/app2/):multitail /var/log/app1/*.log /var/log/app2/*.log - 更灵活的做法:先用
find动态获取每个目录下最新的日志文件:multitail $(find /var/log/app1/ /var/log/app2/ -name "*.log" -type f -mmin -60 | head -n 8)
(上面命令找最近 60 分钟内修改过的日志,最多取 8 个)
用 tail -f + process substitution 合并多个流(适合脚本化)
当需要把多个目录的日志统一输出到一个终端流,并标记来源时,可用 Bash 进程替换配合 tail -f:
- 示例:同时跟踪 app1 和 app2 目录下各自的
current.log,并加前缀标识:tail -f <(tail -f /var/log/app1/current.log | sed 's/^/[APP1] /') <(tail -f /var/log/app2/current.log | sed 's/^/[APP2] /') - 注意:该方式依赖 Bash,且
tail -f对进程替换的支持在较老版本中可能不稳定;建议用于轻量、临时调试
为不同业务目录配置独立 screen 或 tmux 窗格
追求稳定性和操作自由度时,推荐用终端复用器分窗管理,每窗专注一个业务目录:
- 启动 tmux:
tmux new-session -s logs - 新建窗格并分别进入各业务目录执行 tail:
Ctrl-b "(水平分窗)→cd /var/log/app1 && tail -f *.logCtrl-b %(垂直分窗)→cd /var/log/app2 && tail -f *.log - 好处:可单独滚动、暂停某一路日志(
Ctrl-b p暂停/恢复)、重命名窗格(Ctrl-b ,),适合长期值守
自动化发现+追踪:用 inotifywait 响应新日志文件生成
某些业务会按时间轮转日志(如 app.log.2024-05-20),需自动识别并接续 tail。这时单靠 tail -f 不够,要结合事件监听:
- 安装 inotify-tools:
sudo apt install inotify-tools - 写个小脚本监听两个目录,发现新
.log文件即启动 tail:#!/bin/bash<br> inotifywait -m -e create -e moved_to --format '%w%f' /var/log/app1/ /var/log/app2/ | while read file; do<br> [[ "$file" == *.log ]] && echo "[NEW] $file" && tail -n 0 -f "$file" &<br> done - 注意:避免重复启动 tail,生产环境建议加去重逻辑(如记录已跟踪文件名)


















