shell统计pv和uv、独立ip的方法

 更新时间:2014年04月24日 11:03:37   作者:  
这篇文章主要介绍了shell统计pv和uv、独立ip的方法,需要的朋友可以参考下

每天分析日志的哥们实在伤不起,经常需要给出PV,UV,独立IP等一些统计值,使用C/C++,java都可以写,过程是这样的,先读取文件,逐行扫描,把能标记的值放入数据结构中,排重得出最终结果,其实Linux本身有很强大的文本处理功能,完全可以用shell + 一些文本小工具得出结果。

Nngix输出的access log文件如下:

日志文件代码 

复制代码 代码如下:

192.168.1.166 - - 119272312 [05/Nov/2011:16:06:59 +0800] "GET /index.html HTTP/1.1" 200 370 "http://192.168.1.201/" "Chrome/15.0.874.106" "-" 
192.168.1.166 - - 119272312 [05/Nov/2011:16:06:59 +0800] "GET /poweredby.png HTTP/1.1" 200 3034 "http://192.168.1.201/" "Chrome/15.0.874.106" "-" 
192.168.1.177 - - 1007071650 [05/Nov/2011:16:06:59 +0800] "GET /favicon.ico HTTP/1.1" 404 3650 "-" "Chrome/15.0.874.106" "-" 
192.168.1.178 - - 58565468 [05/Nov/2011:16:17:40 +0800] "GET / HTTP/1.1" 200 3700 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)" "-" 
192.168.1.166 - - 119272312 [05/Nov/2011:16:17:40 +0800] "GET /nginx-logo.png HTTP/1.1" 200 370 "http://192.168.1.201/" "Chrome/15.0.874.106" "-" 
 

PV很简单,大致就是统计某个URL的访问次数,例如统计/index.html的访问次数

复制代码 代码如下:
 
grep "/index.html" /var/log/nginx/access.log –c 

UV呢,我们根据用户标识(第四列) ,首先需要字符串截取,使用cut命令,以空格符号分割,-d “ ”, 再取第四列-f 4,然后这里需要排重,需要使用uniq工具,uniq速度很快,但是基于就近排重,前一个后一个一样会排重,之间间隔了不一样的,就不行了,这就必须使用sort工具来对标识符进行排序,排序后再使用uniq工具就可以达到目的,之间我们用管道符号链接, 最后再用 wc –l 输出统计数

比如我们统计访问了/index.html这也页面的uv:

复制代码 代码如下:

grep "/index.html" /var/log/nginx/access.log | cut –d “ ” –f 4| sort | uniq | wc –l 


独立IP:

假设我们要统计整站的独立IP,那么我们不需要使用 grep来匹配具体页面,只需要使用cat输出即可:

复制代码 代码如下:

cat /var/log/nginx/access.log | cut –d “ ” –f 1 | sort| uniq | wc -l 


都木有使用强大的awk,就完成了基本的统计需求:)

相关文章

  • Linux下使用Rsync完成自动化备份

    Linux下使用Rsync完成自动化备份

    对于运维人员来说,数据备份是最重要的工作之一,rsync就是一款通过网络备份重要数据的工具/软件。
    2018-09-09
  • shell脚本怎样判断文件是否存在

    shell脚本怎样判断文件是否存在

    这篇文章主要介绍了shell脚本怎样判断文件是否存在问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • linux服务器安全加固shell脚本代码

    linux服务器安全加固shell脚本代码

    有时候安装完服务器以后,需要一些安全设置,这段脚本就是为了安全加固所写,需要的朋友可以参考下
    2013-06-06
  • Linux系统上实现定时重启Tomcat服务脚本介绍

    Linux系统上实现定时重启Tomcat服务脚本介绍

    大家好,本篇文章介绍的是Linux系统上实现定时重启Tomcat服务脚本介绍,感兴趣的同学赶紧来看看,希望可以对你起到帮助
    2021-11-11
  • 一问弄懂Shell变量四大分类

    一问弄懂Shell变量四大分类

    Shell变量分为环境变量、本地变量、位置参数变量和特殊变量,本文就详细的介绍一下这四种变量的具体使用,具有一定的参考,感兴趣的可以了解一下
    2023-05-05
  • 分享shell编程中的几个小技巧

    分享shell编程中的几个小技巧

    分享shell编程中的几个小技巧,学习shell编程的朋友可以看下
    2013-02-02
  • shell脚本传参中包含有空格的参数

    shell脚本传参中包含有空格的参数

    本文主要介绍了shell脚本传参中包含有空格的参数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Shell 命令执行顺序分析[图]

    Shell 命令执行顺序分析[图]

    Shell 从标准输入或脚本中读取的每一行称为管道(pipeline);它包含了一个或多个命令(command),这些命令被一个或多个管道字符(|)隔开
    2013-01-01
  • linux中shell的变量的数值计算

    linux中shell的变量的数值计算

    今天小编就为大家分享一篇关于linux中shell的变量的数值计算,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • Bash Shell中忽略大小写的设置方法

    Bash Shell中忽略大小写的设置方法

    这篇文章主要介绍了Bash Shell中忽略大小写的设置方法,本文还讲解了其它的一些方便输入命令的设置,如关闭显示隐藏文件、只按一次TAB键、搜索历史命令等技巧,需要的朋友可以参考下
    2015-04-04

最新评论