tail -f 是最直接、最常用的日志实时追踪命令,默认显示文件末尾10行并持续输出新增内容;-F 支持日志轮转,文件重命名或重建后自动接续追踪;可结合 grep 过滤、-s 设置刷新间隔等提升实用性。

用 tail -f 是最直接、最常用的方法,它专为实时追踪日志末尾更新而设计。
核心命令:tail -f 实时跟踪
该命令会持续输出文件新增内容,适合监控正在写入的日志(如服务日志、应用日志):
-
tail -f /var/log/messages—— 显示最后10行,并随新日志实时刷新 -
tail -n 50 -f /var/log/syslog—— 先显示最近50行,再持续追加新内容 -
tail -F /var/log/apache2/access.log—— 推荐用于生产环境,支持日志轮转(rotate),文件被重命名或重建后仍能自动接续追踪
遇到日志轮转时选 -F 而不是 -f
很多服务(如 syslog、nginx、apache)会定期切割日志,生成 access.log.1、access.log.2.gz 等。此时:
-
-f会卡在旧文件上,不再输出新日志 -
-F内部会检测文件 inode 变化,发现原文件被移走或删除后,自动打开新生成的日志文件继续跟踪
配合其他工具提升实用性
单纯看日志有时不够,可叠加使用:
- 过滤关键词:
tail -F /var/log/messages | grep "ERROR" - 高亮关键字段:
tail -F /var/log/messages | grep --color=always -E "(ERROR|WARN)" - 限制刷新频率(避免刷屏):
tail -F -s 0.5 /var/log/myapp.log(每0.5秒检查一次) - 指定进程退出后自动停止:
tail -f --pid=$(pgrep myapp) /var/log/myapp.log
替代方案:inotifywait(适合轻量级事件触发)
如果不需要实时“流式”查看内容,而是想在文件有新写入时执行某条命令(比如发通知、重启服务),可用 inotify 工具:
- 安装:
sudo apt install inotify-tools(Debian/Ubuntu)或yum install inotify-tools(RHEL/CentOS) - 监听修改:
inotifywait -m -e modify /var/log/myapp.log | while read line; do echo "$(date): 日志更新"; done
相比轮询 stat 检查时间戳,inotify 是内核级事件驱动,无延迟、不耗资源。


















