最常用方式是 tail -f 实时追踪日志,轻量可靠;用 -f 可应对 logrotate 轮转;配合 grep 可精准过滤;systemd 系统推荐 journalctl -f。

最常用也最直接的方式是用 tail -f 命令,它专为实时追踪日志设计,轻量、可靠、无需额外安装。
基础实时查看:tail -f
执行 tail -f /path/to/logfile 后,终端会持续输出文件新增内容,直到按 Ctrl+C 退出。它默认从末尾开始,不加载全文件,适合大日志。
- 例如:实时看 Nginx 访问日志 →
tail -f /var/log/nginx/access.log - 只显示最后 50 行再持续追加 →
tail -n 50 -f /var/log/syslog
应对日志轮转:用 -F 替代 -f
生产环境常用 logrotate 自动切割日志(如 app.log → app.log.1),此时 -f 会中断,而 -F 能自动识别新生成的同名文件并继续跟踪。
- 推荐长期监控时统一用
tail -F,比如:tail -F /var/log/messages - 它本质是“按文件名追踪”,而非依赖打开的文件描述符
精准过滤关键信息
日志刷屏太快?配合 grep 只看关心的内容:
- 实时找报错:
tail -F /var/log/mysql/error.log | grep -i "error" - 显示匹配行及上下文(如前后 2 行):
tail -F app.log | grep -C2 "timeout" - 同时匹配多个关键词(忽略大小写):
tail -F app.log | grep -iE "(exception|panic|failed)"
替代方案:journalctl(适用于 systemd 系统)
如果服务由 systemd 管理,可直接查其日志流,无需定位具体文件:
- 实时看全部系统日志:
journalctl -f - 只看某个服务(如 ssh):
journalctl -u ssh -f - 按优先级过滤(如只看错误):
journalctl -p 3 -f(3 表示 err 级别)











