最常用、最直接的方式是用 tail -f 命令,它能持续监听文件末尾新增内容,适合开发调试和故障排查;-F 选项则用于应对日志轮转,自动跟踪新文件,生产环境应优先使用。

最常用、最直接的方式是用 tail -f 命令,它能持续监听文件末尾新增内容,适合开发调试和故障排查。
用 tail -f 实时跟踪日志
这是日常工作中最基础也最有效的做法。命令会打开文件末尾,一旦有新行写入,立即显示在终端上。
- 基本用法:
tail -f /var/log/syslog(查看系统日志实时更新) - 退出方式:按 Ctrl + C 中断监听
- 如果日志路径不确定,可先用
ls -t /var/log/ | head -n 5查看最近修改的日志文件
结合 grep 精准过滤关键词
当日志刷屏快、信息杂乱时,只关注特定错误或接口调用,加管道和 grep 更高效。
- 实时查“error”且忽略大小写:
tail -f /var/log/mysql/error.log | grep -i "error" - 同时匹配多个词(如“timeout”或“failed”):
tail -f app.log | grep -E -i "timeout|failed" - 显示匹配行前后各3行上下文,便于定位:
tail -f app.log | grep -C 3 "500"
应对日志轮转(log rotation)的正确姿势
生产环境日志常被自动压缩归档(如 error.log → error.log.1.gz),直接 tail -f 会断连。需用 -F(大写 F)参数:
-
tail -F /var/log/nginx/access.log—— 自动检测文件重命名或重建,持续跟踪最新日志文件 - 原理:-F = --follow=name + --retry,靠文件名而非文件描述符跟踪,适配 logrotate 行为
- 验证是否生效:观察输出是否在日志滚动后仍持续刷新,而不是停在旧文件末尾
查看压缩日志里的最新记录
历史日志被打包成 .gz 文件?不用解压,用 zgrep 配合 tail 直接读取。
- 查昨天的错误记录(假设压缩文件是 error.log.1.gz):
zgrep "Connection refused" /var/log/mysql/error.log.1.gz | tail -n 10 - 想看压缩日志里最后20行原始内容:
zcat /var/log/redis/redis-server.log.2.gz | tail -n 20 - 注意:zgrep 是 gzip 的 grep 封装,支持正则和 -i 等常用选项,无需额外安装


















