记录操作 nginx 日志文件的命令
chatgpt 强大.. 仅用于保存备用
分段读取
sed -n '100,200p' access.log
awk 'FNR>=100 && FNR<=200' access.log
时间区间
awk '/13:20:00/,/13:21:00/' access.log
匹配内容
grep 'python-request' access.log
ip 排序
cat access.log | awk '{print $1}' | sort -rn | uniq -c | sort -rn
将日志的包含 .js
的行删除
sed -i '/\.js/d' access.log
将日志的包含 .js
的导出
-n 参数表示关闭默认输出,其中 \ 是用来转义 “.” 的特殊字符, p 表示将匹配到的行打印输出。
sed -n '/\.js/p' access.log > js_requests.log
查看日志行数
wc -l access.log
grep 匹配多个正则
-E 的意思就是
|
不需要转义
grep "pattern1\|pattern2" file.txt
grep -E "pattern1|pattern2" file.txt
grep -e "pattern1" -e "pattern2" file.txt
grep 排除多个匹配
grep -v "pattern1\|pattern2" file.txt
grep -E -v "pattern1|pattern2" file.txt
vscode 删除包含字符的行
^.*(.gif|.png|.jpg|.css|.js|.ico).*\n
按 alt
+ enter
选中,再按 delete
删除
json 格式 log 的统计
# 直接 yum install jq 可能会提示 yum 库中没有,需要安装 EPEL 存储库
yum install epel-release
yum install jq
示例1:筛选 qps 大于 200 的日志
[root@VM-3-78-centos logs]# jq 'select(.qps > 200)' traffic.log
{
"ts": "2023-07-04 17:30:07",
"qps": 213
}
{
"ts": "2023-07-04 18:57:28",
"qps": 211
}
示例2:域名此处排行榜
cat access.log | jq -r '.host' | sort | uniq -c | sort -rn
示例3:统计某域名的IP访问排行榜
cat access.log | jq -r 'select(.host == "www.xxx.com") | .remote_addr' | sort | uniq -c | sort -rn
示例4:将 time 字段区间的日志导出
cat debug.log | jq 'select(.time >= "2023-07-20 15:27:44" and .time <= "2023-07-20 15:27:47")' > output_logs.log
本作品采用《CC 协议》,转载必须注明作者和本文链接
总结的很好 :+1: