首先,我先来看下比较常见的access-log的格式,以及各个字段是代表啥意思。
192.168.1.100 - - [12/Dec/2012:08:54:18 +0800] "GET /icons/folder.gif HTTP/1.1" 200 225
192.168.1.100 :客户端的ip地址
192.168.1.100 :客户端的ip地址
-:表示是空的
[12/Dec/2012:08:54:18 +0800]:是访问的时间和时区
GET:客户端的动作
/icons/folder.gif:客户端请求的资源
HTTP/1.1:使用的协议
200:服务端给客户端返回的状态码,表示请求的结果。其中“2”开头,表示请求成功;“3”开头表示被重定向;“4“开头表示请求出错;“5”开头表示服务端错误。更加详细的情况,请查看httpd规范。
225:返回给客户端的不包括响应头的字节数
当然log的格式不是都是这样的,这个log的格式是可以根据自己的实际情况进行配置,Combined Log Format 就是配置log的格式的。
一、找出log中访问次数最多10个ip
awk '{print $1}' access_log |sort |uniq -c|sort -nr|head -n 10
二、在apache日志中找出访问次数最多的时间
awk '{print $4}' access_log |cut -c 14-18|sort|uniq -c|sort -nr|head
awk 用空格分出来的第四列是[12/Dec/2012:08:54:18 +0800];
cut -c 提取14到18个字符