如何在 Linux 上实时查看正在写入的日志文件?

用 less +F、tail -f 和 journalctl -f -u 在 Linux 上实时跟踪日志文件,并确认新日志行确实随着事件发生而写入。

Linux日志文件文本journalctl 系统日志故障排查tail 查看末尾低风险
直接对日志路径运行 tail -f,例如 tail -f /var/log/syslog,让它一直开着,新写入的行会立即出现在终端里。

快速开始

拿一份过期的日志去猜问题很慢。在事件发生的同时盯着文件看,你才能按顺序看到出错那一刻的确切那一行。下面三条命令覆盖了完整流程:先确认文件到底有没有在被写入,再开一条不中断的实时流,最后用 systemd 的 journal 交叉验证同一批事件。

症状

?服务、脚本或守护进程此刻正在出问题,你想看到它实时吐出的输出。但每次用 cat 打开日志都是旧内容,反复手动执行同一条命令,又总是错过出错的那一瞬间。

先打开日志,确认它确实在被写入

用分页器以跟随模式打开文件:它会立刻显示最后几屏内容,然后不断追加新行,一眼就能看出到底有没有内容写入。按 Ctrl+C 停止跟随后,用方向键往回翻,看故障前后的上下文;再按 F 继续跟随。把路径换成你自己的日志:Debian/Ubuntu 的系统日志在 /var/log/syslog,RHEL/Fedora 在 /var/log/messages,应用日志一般在 /var/log/<名称>/ 下。如果你一边复现问题一边等,却始终没有新行出现,说明进程可能在缓冲输出,或者日志其实写到了别的地方。

Linux用 less 在终端查看文件低风险步骤 1

不用打开编辑器,就能滚动、搜索大文件,还能实时盯日志。

命令
$ less +F /var/log/syslog

用 tail -f 实时输出新日志

这一步才是真正的解法:一条不做任何交互、只持续输出新行的实时流。单独开一个终端,或者在 tmux/screen 窗口里运行它,保持开着,然后去复现问题,这样就不会在两次手动刷新之间漏掉内容。把路径换成你真正要追的日志文件。判断成功的标志是:你触发事件后一两秒内终端就出现新行;如果终端一直是空的,先确认自己跟的是程序真正写入的那个文件(很多守护进程有自己的日志路径),另外要记住有些程序只有在退出时才把缓冲区刷出来。

日志一有新行立刻滚动显示,排查服务问题最常用的命令。

命令
$ tail -f /var/log/syslog

再从 journal 里交叉验证同一批事件

如果这个日志属于某个 systemd 服务,就同时从 journal 里跟踪一份。journal 会带上精确的时间戳和单元信息输出同样的消息,可以确认你盯的是正确的来源,而且日志没有被丢弃或在中途被轮转掉。把单元名换成你正在排查的服务,可以用 systemctl list-units --type=service 列出候选。如果 journal 里出现了 tail -f 流中从未出现过的行,说明两者看的并不是同一个文件,你之前跟的那个文件是错的。

journalctl -f -u UNIT 可实时流式输出某个 systemd 服务的新日志,并附带时间戳和元数据。

命令
$ journalctl -u nginx.service -f
!tail -f 和 journalctl -f 不会自己退出,看完要按 Ctrl+C 停止,否则终端会被一直占住。日志非常繁忙时输出会刷屏,可以用 journalctl -f -u 缩小到单个服务,或者把输出接到过滤器里。

如何确认已解决

你触发事件后一两秒内终端就出现新行,并且时间戳在你看的时候不断向前推进。如果涉及 systemd 服务,journal 里会出现时间戳吻合的同样消息。

来源

  • less(1) — Linux manual page
    man7.org · community · 2026-09-17
    依据: less pages through a file with scroll, search (/), and navigation; +F follows appended data and -N shows line numbers.
  • tail(1) — Ubuntu manpage
    Ubuntu · community · 2026-09-17
    依据: Ubuntu manpage describes --follow (-f) and -F, which follows the file by name and handles rotation
  • tail(1) — man7.org
    man7.org · community · 2026-09-17
    依据: Man page documents tail's -f option to follow a file as it grows and -n to select the number of lines
  • journalctl(1) - Query the systemd journal
    Ubuntu Manpages · technical · 2026-09-17
    依据: -f, --follow shows only the most recent journal entries, and continuously prints new entries as they are appended; -u filters by unit.

最后验证: 2026-09-22

相关指南