查看:2121|回复:0
awk与访问 IP 地址相关的命令发表时间:2013-01-08 14:36:46

我爱java

0分享0主题0帖子

学徒一级

(初出茅庐)

统计共有多少个不同的 IP 访问:

awk '{print $1}' access.log |sort|uniq|wc – l

统计每一个 IP 访问了多少个页面:

awk '{++S[$1]} END {for (a in S) print a,S[a]}' log_file

将每个 IP 访问的页面数进行从小到大排序:

awk '{++S[$1]} END {for (a in S) print S[a],a}' log_file | sort -n

查看某一个 IP(例如 202.106.19.100 )访问了哪些页面:

grep ^202.106.19.100 access.log | awk '{print $1,$7}'

统计 2012 年 8 月 31 日 14 时内有多少 IP 访问 :

awk '{print $4,$1}' access.log | grep 31/Aug/2012:14 | awk '{print $2}'| sort | uniq | \ wc -l

统计访问最多的前十个 IP 地址

awk '{print $1}' access.log |sort|uniq -c|sort -nr |head -10

与响应页面大小的命令

列出传输大小最大的几个文件

cat access.log |awk '{print $10 " " $1 " " $4 " " $7}'|sort -nr|head -100

列出输出大于 204800 byte ( 200kb) 的页面以及对应页面发生次数

cat access.log |awk '($10 > 200000){print $7}'|sort -n|uniq -c|sort -nr|head -100

与页面响应时间相关的命令

如果日志最后一列记录的是页面文件传输时间 (%T),例如我们可以自定义日志格式为:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %T" combined

可以使用下面的命令统计出所有响应时间超过 3 秒的日志记录。

awk '($NF > 3){print $0}' access.log

注意:NF 是当前记录中域的个数。$NF 即最后一个域。

列出相应时间超过 5 秒的请求

awk '($NF > 5){print $0}' access.log | awk -F\" '{print $2}' |sort -n|
uniq -c|sort -nr|head -20


您需要登录以后才可以回帖    登录|注册