Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1285712
  • 博文数量: 315
  • 博客积分: 10397
  • 博客等级: 上将
  • 技术积分: 3731
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-07 21:21
文章分类

全部博文(315)

文章存档

2015年(10)

2014年(3)

2013年(2)

2012年(8)

2011年(8)

2010年(29)

2009年(59)

2008年(77)

2007年(119)

分类: LINUX

2009-04-16 12:53:38

首先要了解一下Apache的log记录形式,如下:

61.135.249.180 - - [22/Mar/2009:04:19:17 +0800] "GET /news_in.php?fid=233&      tid=4763 HTTP/1.1" 200 7865 "-" "Mozilla/5.0 Firefox/3.0.5"


第一项为客户端的IP,第二项为访问时间,后面还请求的具体动作,浏览器类型等。我们关心的就是一条记录的第一项,我们知道,客户端每发起一次HTTP请求Apache就会生成如上的一条记录,那么我们自统计的时候就需要注意除掉重复的IP。

用shell实现如下,涉及到awk,sort,unip等工具。

用awk打印每行的第一项。

awk  '{print $1}'  access_log

用sort排序,方便后面去掉重的IP。

awk  '{print $1}'  access_log | sort

用uniq去掉重复IP的。

awk  '{print $1}'  access_log | sort | uniq

然后就可以用wc统计了。

awk  '{print $1}'  access_log | sort | uniq | wc

简单来说就是一些UNIX工具的结合。

[root@web httpd]# awk  '{print $1}'  access_log | sort | uniq | wc
    764     764   10982
[root@web httpd]#
阅读(1462) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~