nginx 日志截取示例
日志路径:/usr/local/nginx/logs, 截取 access.log 中 2019 年 3 月 24 日 17 点 00~02 之间的日志:
写法 1:
cat access.log | awk '$4>="[24/Mar/2019:17:00:00"&& $4 <="[24/Mar/2019:17:02:00"'
写法 2:
cat access.log | egrep "24/Mar/2019" | awk -F':' '$2 = 17 && $3>= 00 && $3 <= 02'
写法 3:
cat access.log |egrep "24/Mar/2019" |sed -n '/17:00:00/,/17:02:00/p'
tomcat 日志截取示例
日志路径:/usr/local/tomcat/logs, 截取 catalina.out 中 2019 年 3 月 24 日 17 点 00~02 之间的日志:
写法 1:
sed -n '/2019-03-24 17:00:/,/2019-03-24 17:02:/p' catalina.out
写法 2:
cat catalina.out| egrep "2019-03-24" | awk -F':' '$2 = 17 && $3>= 00 && $3 <= 02'
awk 统计 nginx 日志的 ip 访问量
nginx 日志事先截取一部分: tail -n500 access.log>access.log1
第一种: 使用 awk sort,$1 表示以空格为分割符的第一列, 也就是文件中的 ip 地址, 使用 sort 对结果排序, uniq -c 进行计数, 最后 sort -n 是以 "数字" 来排序, 针对统计后的访问次数来排序
awk '{print $1}' access.log1|sort |uniq -c|sort -n
第二种: awk for, 即数组; 默认变量为 0, 对每一行的 $1 作为 key,count 数组 ++, 实现 ip 的计数. 计数结束后 END. 然后把结果打印出来, 最后 sort -n 以 "数字" 排序.
awk '{count[$1]++;}END{for(i in count){printf("%s\t%s\n", count[i], i);}}' access.log1|sort -n
取 nginx 日志访问接口次数
通过上面的方法将某个时间段日志取出来, 查询该时间段访问接口最多的前 10:
- #!/bin/bash
- #统计接口的访问次数
- TODAY=`date +%d/%b/%Y`
- cat $1 |awk -F '"''{print $2}'|awk '{split($2,res,"?") ; print res[1] }'|sort|uniq -c|sort -gr |head -n10
来源: http://www.bubuko.com/infodetail-3165977.html