发现更大的SEO世界
 找回密码
 注册

扫一扫,访问微社区

搜索
»首页»SEO培训 SEO论坛 SEO交流 帖子
123下一页
发新帖
莫山,改我论坛密码的没有小JJ,哼!!!    

日志分析shell命令符快速入门

本帖最后由 莫山 于 2014-6-11 00:13 编辑

学会用shell分析日志只要一上午!!!

很多地方分享了日志分析的shell脚本,但是基本没说每个命令符的具体含义,学习成本还是很高,在这里总结下,方便大家快速入门。
1、在Windows下的用户要使用shell命令符的话请先安装cygwin,安装方法自行Google(搜技术问题请使用google,百度搜不到活该)     ===================================
     更新:Cygwin安装详解,快速安装所有插件,无需联网。   

2、下面粗略介绍下SEO日志分析常用的命令符用法,需要详细了解每个命令符请使用Google。

  • less  文件名       查看文件内容  按“q” 退出

  • cat  文件名      打开文件,可以多次打开几个文件 |     cat 1.log 2.log   |cat *.cat

  • grep -参数  文件名



    • -i 不区分大小写
    • -v 显示不符合条件的所有行
    • -c  显示符合条件的所有行数(符合条件的数量)

  • egrep 属于grep的升级版,在正则这一块的支持更完善,使用正则的时候建议使用egrep

  • head -2  文件名 显示2行

  • head -100  文件名  | tail -10 >>a.log   提取文件第91-100行数据

  • wc -参数   文件名      统计文本大小,字符多少,行数



    • -c 统计文本字节数
    • -m 统计文本字符数
    • -l 统计文本有多少行


  • sort  - 参数 文件名      对文件进行排序



    • -n 对文件按照数字排序
    • -r 反向排序

  • uniq -参数     文件名    对文件去重,去重前需要使用排序sort



    • -c  显示数据重复的次数

  • split  -参数  文件名       对文件进行切割



    • -100   (每100行切割成一个文件)
    • -C    25m/b/k   (每25兆/字节/K 分割成一个文件)

  • |    管道,把上一条命令的结果传输给下一条命令

  • “>” 和“>> ” 重定向写入文件中 “>”相当于“w”清空并写入   “>>”相当于“a” 追加进文件

  • awk -F  '分割符'  Pattern {action}  文件名     使用指定的字符对每一行数据进行分段,默认是空格(网站日志就是空格分开)



    • -F后面跟的是分隔符
    • pattern 就是action执行的条件,这里可以使用正则表达式
    • $n 即时第几段数据  $0表示整行数据
    • NF表示当前记录的字段数
    • $NF 表示最后一个字段
    • BEGIN和END,这两者都可用于pattern中,提供BEGIN和END的作用是给程序赋予初始状态和在程序结束之后执行一些扫尾的工作

  • bash shell.sh   运行shell.sh脚本

  • dos2unix   xxoo.sh 将“\r\n”转换成“\n”   Windows——>linux (由于Windows和Linux下的换行符不同,所以我们在Windows下面下的代码需要使用dos2unix 转换成Linux下的换行符,否则运行shell脚本会报错)

  • unix2dos    xxoo.sh 将“\n”转换成“\r\n”  linux——>Windows

  • rm xx.txt  删除xx.txt文件

3、一些简单的命令符介绍到这里,需要了解shell,建议大家查看相关的书籍,下面我们开始使用shell分析日志。

日志格式如下:

less log.log


1、切割百度的抓取数据(将文件切割出来对专门的爬虫数据进行处理能提高效率)
  1. cat log.log |grep -i ‘baiduspider’ >baidu.log
复制代码


2、网站状态码个数查询
  1. awk ‘{print $9}’  baidu.log|sort|uniq -c|sort -nr
复制代码


3、百度总抓取量
  1. wc -l baidu.log
复制代码


4、百度不重复抓取量
  1. awk ‘{print $7}’      baidu.log|sort|uniq|wc -l
复制代码


5、百度平均每次抓取的数据大小(结果是KB)
  1. awk ‘{print $10}’   baidu.log|awk ‘BEGIN{a=0}{a+=$1}END{ print a/NR/1024}’
复制代码


6、首页抓取量
  1. awk ‘$7~/\.com\/$/’   baidu.log|wc -l
复制代码


7、某目录抓取量
  1. grep   ‘/news/’   baidu.log|wc -l
复制代码


8、抓取最多的10个页面
  1. awk ‘{print $7}’ baidu.log|sort|uniq -c|sort -nr|head -10
复制代码


9、找出抓取的404页面
  1. awk ‘$9~ /^404$/ {print $7}’ baidu.log|sort|uniq|sort -nr
复制代码


10、找出抓取了多少js文件和文件抓取的次数
  1. awk ‘$7~ /.js$/ {print $7}’ baidu.log|sort|uniq -c  |sort -nr
复制代码












评分

参与人数 11赞同 +44 收起 理由
Summer + 4 很给力!
xcl1086 + 4 很给力!
hwj888 + 4 赞一个!
seosxy + 4 解释一下 第十个什么意思 $7 {print $7.
SEO小橙 + 4 很给力!感谢耐心的回答!
sobeited + 4 很给力!
姜姜 + 4 很给力!
小乐 + 4 莫总 就是牛!
星鬼 + 4 神马都是浮云
AIR_seoqx + 4 对有技术基础的人来说,日志分析用到的shel.
ZERO + 4 这类文章使收藏功能的价值体现出来了.

查看全部评分

发表于 2014-5-26 22:21:58
回复 收藏
莫山,改我论坛密码的没有小JJ,哼!!!    

本帖最后由 莫山 于 2014-6-5 22:28 编辑

调取所有的百度ip
  1. awk ‘{print $1}’ baidu.log|sort|uniq >ip.txt
复制代码


然后用程序跑一片,看那些是假蜘蛛ip。然后干掉,在分析日志,就精准了。
 楼主| 发表于 2014-6-5 22:26:20
回复 收藏
sobeited,Sky’s the limit!    

nslookup出来的结果,不一定准
发表于 2014-6-6 17:23:23
回复 收藏
莫山,改我论坛密码的没有小JJ,哼!!!    

sobeited 发表于 2014-6-6 17:23
nslookup出来的结果,不一定准

嗯?理由,我现在比较疑惑这一块。
 楼主| 发表于 2014-6-6 19:41:51
回复 收藏
Axnic.tian,看我三步之内娶你小妹    

sobeited 发表于 2014-6-6 17:23
nslookup出来的结果,不一定准

不能够吧,百度站长平台出来的文章有一张就是说用Nslookup识别蜘蛛的。还请详解下。
发表于 2014-6-6 20:15:28
回复 收藏
sobeited,Sky’s the limit!    

事件一:同一份日志,在本地、在服务器,从530个IP过滤出来的结果,一个是235、一个是244

事件二:下面结果中,这些被认为是假蜘蛛的,通过IP138查询,结果是“北京市 百度蜘蛛 联通”
*** ns-pd.online.sh.cn 找不到 61.135.165.42: Non-existent domain
*** ns-pd.online.sh.cn 找不到 61.135.165.43: Non-existent domain
*** ns-pd.online.sh.cn 找不到 61.135.165.5: Non-existent domain
*** ns-pd.online.sh.cn 找不到 61.135.165.6: Non-existent domain
*** ns-pd.online.sh.cn 找不到 61.135.165.7: Non-existent domain
*** ns-pd.online.sh.cn 找不到 61.135.165.8: Non-existent domain
*** ns-pd.online.sh.cn 找不到 61.135.169.10: Non-existent domain
*** ns-pd.online.sh.cn 找不到 61.135.169.3: Non-existent domain
*** ns-pd.online.sh.cn 找不到 61.135.169.36: Non-existent domain
*** ns-pd.online.sh.cn 找不到 61.135.169.37: Non-existent domain
*** ns-pd.online.sh.cn 找不到 61.135.169.40: Non-existent domain
*** ns-pd.online.sh.cn 找不到 61.135.169.41: Non-existent domain
*** ns-pd.online.sh.cn 找不到 61.135.169.42: Non-existent domain
*** ns-pd.online.sh.cn 找不到 61.135.169.43: Non-existent domain
*** ns-pd.online.sh.cn 找不到 61.135.169.8: Non-existent domain
*** ns-pd.online.sh.cn 找不到 61.135.169.9: Non-existent domain


顺便说一下,为什么在chrome不能插入图片、附件?
发表于 2014-6-8 15:54:06
回复 收藏
莫山,改我论坛密码的没有小JJ,哼!!!    

sobeited 发表于 2014-6-8 15:54
事件一:同一份日志,在本地、在服务器,从530个IP过滤出来的结果,一个是235、一个是244

事件二:下面结 ...

你多试几次,很多时候,无结果,在试几次就有结果。
 楼主| 发表于 2014-6-8 17:35:33
回复 收藏
sobeited,Sky’s the limit!    

莫山 发表于 2014-6-8 17:35
你多试几次,很多时候,无结果,在试几次就有结果。

所以说nslookup的结果也不一定靠谱
发表于 2014-6-8 17:56:19
回复 收藏
莫山,改我论坛密码的没有小JJ,哼!!!    

sobeited 发表于 2014-6-8 17:56
所以说nslookup的结果也不一定靠谱

不是不靠谱,是网络类的问题。
 楼主| 发表于 2014-6-8 20:29:56
回复 收藏
sobeited,Sky’s the limit!    

莫山 发表于 2014-6-8 20:29
不是不靠谱,是网络类的问题。

61段的IP呢?nslookup出来了么?
发表于 2014-6-8 20:31:43
回复 收藏
莫山,改我论坛密码的没有小JJ,哼!!!    

sobeited 发表于 2014-6-8 20:31
61段的IP呢?nslookup出来了么?

你确认这是百度的ip段?
 楼主| 发表于 2014-6-8 22:56:56
回复 收藏
sobeited,Sky’s the limit!    

莫山 发表于 2014-6-8 22:56
你确认这是百度的ip段?

这么密集的IP段,日志agent也显示是Baiduspider,这个IP段的抓取不像3类IP抓取的那么多,每个IP抓取只有几条,所以排除采集,再加上IP138出来的显示结果,所以极度怀疑
发表于 2014-6-9 09:55:48
回复 收藏
莫山,改我论坛密码的没有小JJ,哼!!!    

sobeited 发表于 2014-6-9 09:55
这么密集的IP段,日志agent也显示是Baiduspider,这个IP段的抓取不像3类IP抓取的那么多,每个IP抓取只有 ...

说不好是不是某家的爬虫在伪装百度,可以考虑不屏蔽,或者坐下实验,看百度的站长平台的抓取压力变化
 楼主| 发表于 2014-6-9 10:10:47
回复 收藏
sobeited,Sky’s the limit!    

莫山 发表于 2014-6-9 10:10
说不好是不是某家的爬虫在伪装百度,可以考虑不屏蔽,或者坐下实验,看百度的站长平台的抓取压力变化 ...

这个段的每个IP抓取只有几条,即使屏蔽,也不会看出压力变化
发表于 2014-6-9 10:34:12
回复 收藏
c0901yuan,一直喜欢 用c0901yuan  做网名。    

本帖最后由 c0901yuan 于 2014-6-9 19:25 编辑
sobeited 发表于 2014-6-9 10:34
这个段的每个IP抓取只有几条,即使屏蔽,也不会看出压力变化


嗯  今天  重看标题    说是 半天 我用了  一天半。。看来我这智商不行了
  重点是  还得 记住这几个命令才行
另外 $9~ /^404$/ {print $7}  这个能详解一下不
        print $这个知道是什么意思   加上前面 的就不懂了

发表于 2014-6-9 19:23:42
回复 收藏
123下一页
快速回复 返回顶部 返回列表