tail -f是linux中实时查看动态日志的最常用方式,特别适用于追踪nginx的access.log,能持续输出新增日志行;配合-f可自动重连logrotate切割后的新文件,-n可限制初始显示行数,| grep --line-buffered可高效过滤关键词。

tail -f 是实时查看日志最常用的方式,特别适合追踪 Nginx 的 access.log,能持续输出新追加的日志行,不用反复手动刷新。
基本用法:直接跟踪默认访问日志
Nginx 默认访问日志路径通常是 /var/log/nginx/access.log(具体位置以你的 nginx.conf 中 log_format 和 access_log 指令为准)。执行以下命令即可实时滚动查看:
tail -f /var/log/nginx/access.log
终端会停在最后一行,并随新请求实时追加内容。按 Ctrl+C 可退出。
配合 grep 过滤特定请求(如某个 IP 或状态码)
生产环境日志量大,常需筛选关键信息。例如只看返回 404 的请求:
tail -f /var/log/nginx/access.log | grep " 404 "- 想看某 IP(比如 192.168.1.100)的访问:
tail -f /var/log/nginx/access.log | grep "192.168.1.100"
注意:grep 会缓冲输出,有时延迟明显。可加 --line-buffered 提升实时性:tail -f /var/log/nginx/access.log | grep --line-buffered "404"
多文件同时跟踪(如 access.log + error.log)
如果想并行观察访问和错误日志,可用 -f 同时指定多个文件:
tail -f /var/log/nginx/access.log /var/log/nginx/error.log
每行开头会自动标注文件名(如 access.log 或 error.log),便于区分来源。
实用技巧与注意事项
- 日志被 logrotate 切割后,-f 默认会停止跟踪(因为原文件句柄失效)。加 -F(大写 F)可自动重连新文件:
tail -F /var/log/nginx/access.log - 限制初始显示行数,避免刷屏:加 -n 20 只显示最后 20 行再实时追加:
tail -n 20 -f /var/log/nginx/access.log - 确保你有读取日志文件的权限(通常需 sudo):
sudo tail -f /var/log/nginx/access.log
不复杂但容易忽略细节,用对参数才能稳稳盯住线上流量变化。











