本章节介绍如何分析调试日志。
sudo tail -f /var/log/nginx/error.log
实时查看说明:
tail -f:实时查看日志文件的新增内容sudo tail -n 100 /var/log/nginx/error.log
查看最后 100 行说明:
tail -n 100:查看日志文件的最后 100 行sudo grep "error" /var/log/nginx/error.log
搜索特定内容说明:
grep "error":搜索包含 "error" 的日志行nginx: [emerg] invalid parameter "http" in /etc/nginx/nginx.conf:5
错误原因: 配置文件中存在语法错误,如参数名称错误、参数值错误、缺少参数等。
解决方法:
nginx -t 测试配置文件nginx: [emerg] open() "/var/log/nginx/error.log" failed (13: Permission denied)
错误原因: Nginx 没有权限访问日志文件或目录。
解决方法:
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
错误原因: 端口已被其他进程占用。
解决方法:
nginx: [emerg] open() "/etc/nginx/nginx.conf" failed (2: No such file or directory)
错误原因: 配置文件不存在。
解决方法:
sudo grep -oP "emerg|alert|crit|error|warn|notice|info|debug" /var/log/nginx/error.log | sort | uniq -c
统计错误类型说明:
grep -oP:使用正则表达式匹配日志级别sort:排序uniq -c:统计重复次数sudo awk '{print $NF}' /var/log/nginx/error.log | sort | uniq -c | sort -rn | head -10
查看最频繁的错误说明:
awk '{print $NF}':提取日志的最后一列sort:排序uniq -c:统计重复次数sort -rn:按数字降序排序head -10:查看前 10 行sudo awk '/2024\/01\/01 10:00:00/,/2024\/01\/01 11:00:00/' /var/log/nginx/error.log
查看特定时间段的日志说明:
awk '/开始时间/,/结束时间/':查看特定时间段的日志sudo grep "192.168.1.1" /var/log/nginx/error.log
查看特定 IP 的日志说明:
grep "192.168.1.1":查看特定 IP 的日志