您的位置:首页 > 运维架构 > Apache

截取access.log一段日志 和截取apache的访问日志ip

2012-08-03 18:02 281 查看

转发 评论
2011-12-09 18:43

看到以前的一道shell面试题,心血来潮,看看自己现在能做了吗?!小试一下……

在access.log中截取 16/Aug/2010:14:31:30到17/Aug/2010:10:12:07间的日志信息,并输出到log.txt中,我的思路,用sed打印16/Aug/2010:14:31:30和17/Aug/2010:10:12:07间的日志并>

#!/bin/bash

n1=`grep -n ?\/Aug\/2010:14:31:30' access.log|head -1|cut -d ':' -f1`

n2=`grep -n ?\/Aug\/2010:10:12:07' access.log|tail -1|cut -d ':' -f 1`

sed -n "${n1},${n2}p" access.log >log.txt

另外sed还有更简单的方法

sed -n '/16\/Aug\/2010:14:31:30/,/17\/Aug\/2010:10:12:07/'p >log.txt

但是此命令思路是对的,可是当access.log 在同一时间内有大量并发访问日志时,这个就不准确了。最完善的还要算第一种思路。

总结)统计Apache或Nginx访问日志里的独立IP访问数量的Shell

点击量:172次 发布时间:2011-11-15 10:15

1、把IP数量直接输出显示:

cat access_log_2011_06_26.log |awk '{print $1}'|uniq -c|wc -l

2、把IP数量输出到文本显示:

cat access_log_2011_06_26.log |awk '{print $1}'|uniq -c|wc -l > ip.txt

总结:如果单个访问日志大小超过2G,用这个命令查看时很占系统资源,系统负载会上升;所以在服务器高负载时不要查看,最好在低负载时间段查看。上面截图是公司其中一台广告服务器的一天ip访问量,这个访问量其实还包括了搜索引擎的。访问日志只能做个参考,要准确还是要程序来统计。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: