在Linux系统中,日志文件记录了内核、服务以及各类应用程序的运行轨迹。当系统出现异常或需要确认某项任务是否按时执行时,实时监视这些日志比事后翻找要高效得多。不同于Windows上常常依赖图形化事件查看器,Linux环境下绝大多数监视操作都可以在纯命令行完成,并且能灵活组合管道与其他工具。

使用tail命令实时跟踪日志输出
tail是Linux中最基础也最常用的日志查看命令,它的核心能力是显示文件末尾的内容。加上-f参数后,tail会进入跟随模式,当文件有新内容写入时,终端会自动刷新并显示新增的行。这种方式特别适合监视像/var/log/syslog或/var/log/nginx/access.log这类持续增长的日志。
在实际使用中,我们常配合-n参数指定从末尾多少行开始显示,避免一打开就被历史数据刷屏。例如tail -n 50 -f /var/log/syslog表示先打出最后50行,再持续跟踪。如果日志采用了日志轮转(log rotate),旧文件被重命名、新文件以同名创建,单纯的-f可能失去跟踪目标,此时应当使用tail -F,它会在文件被替换后自动重新打开同名文件。
下面的示例展示了如何用tail监视Nginx错误日志,并同时通过管道用grep过滤出包含“error”的行,这样屏幕上只会留下值得关注的记录:
# 实时跟踪Nginx错误日志,只显示包含error的新行 tail -F -n 100 /var/log/nginx/error.log | grep --line-buffered error
这种组合的简单之处在于无需安装额外软件,但缺点也很明显:只能单文件、单流观察,且一旦终端关闭,监视进程就会终止。对于临时排查,它已经足够;若需长期后台监视,则要借助nohup或更专业的工具。
借助multitail同时监视多个日志源
当我们需要对照应用日志和系统日志来定位问题时,反复切换tail窗口非常麻烦。multitail是一个用C编写的小工具,它能在同一个终端界面里分屏显示多个文件,并且支持彩色高亮、正则过滤和合并时间线。安装通常只需执行apt install multitail或yum install multitail。
使用multitail时,可以直接在命令后列出多个文件路径,工具会为每个文件分配一个子窗口。例如multitail /var/log/syslog /var/log/auth.log可以上下分屏同时跟踪系统日志和认证日志。更实用的是它的合并模式:加上-i参数能把多个源混在一个窗口里,按时间顺序交错显示,方便观察因果关系。
以下命令演示了如何同时监视两个服务日志,并对不同文件设置不同的过滤规则:
# 分屏监视Nginx访问与错误日志,错误日志仅显示warn以上级别 multitail -i /var/log/nginx/access.log -i /var/log/nginx/error.log -e "warn|error"
相比于裸tail,multitail显著降低了多日志对比的认知负担,而且它原生支持断线重连和文件轮转。唯一的不足是它属于第三方包,在极度精简的容器镜像里可能默认不存在,需要手动装包。对于日常运维机来说,它几乎是必备的辅助工具。
利用systemd journal集中查看系统服务日志
采用systemd作为初始化系统的Linux发行版,不再把所有日志都平铺在/var/log下的文本文件里,而是交由journald统一收集到二进制日志中。这时用tail去盯文本文件可能根本看不到内容,正确的做法是通过journalctl命令来实时监视。
journalctl -f的行为类似tail -f,它会持续输出新产生的日志条目。如果只想看某个服务的动态,可以加-u参数,比如journalctl -u nginx.service -f就只跟踪Nginx服务。由于journal里带有了结构化字段,我们还能按优先级过滤,如journalctl -p err -f仅显示错误级别以上的消息,避免被普通信息淹没。
下面这段脚本展示了如何把journal中与数据库相关的错误实时抽取出来,并简单统计每分钟出现次数,帮助快速判断故障频率:
# 实时监视postgresql服务错误,并用awk做简易计数
journalctl -u postgresql.service -p err -f | awk '
{
print $0
cnt++
{ if (cnt % 10 == 0) print "--- 已捕获错误数: " cnt " ---" }
}'
journal方案的优点在于无需关心日志文件是否被轮转或权限是否可读,因为journald已经做了统一管控;缺点则是二进制日志可能占用磁盘空间,需要配置/etc/systemd/journald.conf中的SystemMaxUse来限制大小。理解文本日志与journal两套体系,才能在各类Linux环境里都不慌不乱地监视现场。