首页 > 代码库 > 统计日志文件里访问量前十的ip并按从多到少排列
统计日志文件里访问量前十的ip并按从多到少排列
Apache座位web服务器。访问日志名为ex.log
先找出IP段,然后进行数量统计,最后对数量进行数量排序,取出最大值。
# cut -d "" -f 1 ex.log|uniq -c|sort -r|head -1|awk ‘{print $2}‘
1、取出IP段:
# cut -d " " -f 1 clientuser.log
127.0.0.1
127.0.0.1
192.168.1.100
192.168.1.100
192.168.1.100
192.168.1.100
192.168.1.110
2、统计IP访问数量
# cut -d " " -f 1 ex.log |uniq -c
2 127.0.0.1
4 192.168.1.100
1 192.168.1.110
3、对统计好的IP访问数量排序
# cut -d " " -f 1 ex.log |uniq -c|sort -r
4 192.168.1.100
2 127.0.0.1
1 192.168.1.110
4、取出访问量最大的IP及访问数量
# cut -d " " -f 1 ex.log |uniq -c|sort -r|head -1
4 192.168.1.100
5、只显示IP
# cut -d " " -f 1 ex.log |uniq -c|sort -r|head -1|awk ‘{print $2}‘
192.168.1.100
awk ‘{a[$1] += 1;} END {for (i in a) printf(“%d %s\n”, a[i], i);}’ 日志文件 | sort -n | tail
首先用awk统计出来一个列表,然后用sort进行排序,最后用tail取最后的10个。
以上参数可以略作修改显示更多的数据,比如将tail加上-n参数等,另外日志格式不同命令也可能需要稍作修改。
当前WEB服务器中联接次数最多的ip地址
#netstat -ntu |awk ‘{print $5}’ |sort | uniq -c| sort -nr
查看日志中访问次数最多的前10个IP
#cat access_log |cut -d ‘ ‘ -f 1 |sort |uniq -c | sort -nr | awk ‘{print $0 }’ | head -n 10 |less
查看日志中出现100次以上的IP
#cat access_log |cut -d ‘ ‘ -f 1 |sort |uniq -c | awk ‘{if ($1 > 100) print $0}’|sort -nr |less
查看最近访问量最高的文件
#cat access_log |tail -10000|awk ‘{print $7}’|sort|uniq -c|sort -nr|less
查看日志中访问超过100次的页面
#cat access_log | cut -d ‘ ‘ -f 7 | sort |uniq -c | awk ‘{if ($1 > 100) print $0}’ | less
统计某url,一天的访问次数
#cat access_log|grep ’12/Aug/2009′|grep ‘/images/index/e1.gif’|wc|awk ‘{print $1}’
前五天的访问次数最多的网页
#cat access_log|awk ‘{print $7}’|uniq -c |sort -n -r|head -20
从日志里查看该ip在干嘛
#cat access_log | grep 218.66.36.119| awk ‘{print $1″\t”$7}’ | sort | uniq -c | sort -nr | less
列出传输时间超过 30 秒的文件
#cat access_log|awk ‘($NF > 30){print $7}’ |sort -n|uniq -c|sort -nr|head -20
列出最最耗时的页面(超过60秒的)
#cat access_log |awk ‘($NF > 60 && $7~/\.PHP/){print $7}’ |sort -n|uniq -c|sort -nr|head -100
列出10-12月访问量最大的100个IP从高到底排列,并列出每个IP的重复数量
netstat -ntu | tail -n +3|awk ‘{ print $5}‘ | cut -d : -f 1 | sort | uniq -c| sort -n -r | head -n 5
8 127.0.0.1
2 192.168.47.27
tail -n +3 :去掉标记的行。
awk ‘{ print $5}‘:取数据的低5域(第5列)。
cut -d : -f 1 :取IP部分。
sort:对IP部分进行排序。
uniq -c:打印每一重复行出现的次数。(并去掉重复行)
sort -n -r:按照重复行出现的次序倒序排列。
head -n 5:取排在前5位的IP
统计日志文件里访问量前十的ip并按从多到少排列