在 Linux 中,“访问日志”通常指 Web 访问日志(如 Nginx / Apache),也可能指 系统登录日志、SSH 访问日志 等。下面按常见场景给你讲 如何过滤和分析 Linux 访问日志。
# Nginx
/var/log/nginx/access.log
# Apache
/var/log/apache2/access.log
# 或
/var/log/httpd/access_log
# 查看某个 IP 的访问记录
grep "192.168.1.100" access.log
# 统计访问最多的 IP
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head
# 访问 /login 的日志
grep "/login" access.log
# 访问 API 接口
grep "/api/user" access.log
# 只查看 404
grep " 404 " access.log
# 查看 500 错误
grep " 500 " access.log
# 状态码统计
awk '{print $9}' access.log | sort | uniq -c | sort -nr
# 查看某天的日志
grep "10/Apr/2024" access.log
# 某小时
grep "10/Apr/2024:14" access.log
# 只看 POST 请求
grep "POST" access.log
# 只看 GET 请求
grep "GET" access.log
# CentOS / RHEL
/var/log/secure
# Ubuntu / Debian
/var/log/auth.log
# 登录失败
grep "Failed password" /var/log/auth.log
# 登录成功
grep "Accepted password" /var/log/auth.log
grep "Failed password" /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr
Nginx 默认日志格式示例:
IP - - [时间] "请求" 状态码 大小 "来源" "UA"
# 提取 IP + 状态码
awk '{print $1, $9}' access.log
# 统计访问量前 10 的 URL
awk '{print $7}' access.log | sort | uniq -c | sort -nr | head
# 实时查看访问日志
tail -f access.log
# 实时查看 404
tail -f access.log | grep " 404 "
goaccess access.log -o report.html --log-format=COMBINED
如果你能告诉我:
我可以直接给你 精准命令示例。