Shell日志分析常用命令和例子

 更新时间:2014年12月01日 09:23:27   投稿:junjie  
这篇文章主要介绍了Shell日志分析常用命令和例子,本文重点在一样实现日志分析命令语句例子上,本文给出了10条常用的分析实例,需要的朋友可以参考下

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

很多地方分享了日志分析的shell脚本,但是基本没说每个命令符的具体含义,学习成本还是很高,在这里总结下,方便大家快速入门。

1、在Windows下的用户要使用shell命令符的话请先安装cygwin,安装方法自行Google(搜技术问题请使用google,百度搜不到活该)

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分析日志

1、切割百度的抓取数据(将文件切割出来对专门的爬虫数据进行处理能提高效率)

复制代码 代码如下:

cat log.log |grep -i ‘baiduspider' >baidu.log

2、网站状态码个数查询 
复制代码 代码如下:

awk ‘{print $9}' baidu.log|sort|uniq -c|sort -nr

3、百度总抓取量
复制代码 代码如下:

wc -l baidu.log

4、百度不重复抓取量 
复制代码 代码如下:

awk ‘{print $7}' baidu.log|sort|uniq|wc -l

5、百度平均每次抓取的数据大小(结果是KB)
复制代码 代码如下:

awk ‘{print $10}' baidu.log|awk ‘BEGIN{a=0}{a+=$1}END{ print a/NR/1024}'

6、首页抓取量
复制代码 代码如下:

awk ‘$7~/\.com\/$/' baidu.log|wc -l

7、某目录抓取量
复制代码 代码如下:

grep ‘/news/' baidu.log|wc -l

8、抓取最多的10个页面
复制代码 代码如下:

awk ‘{print $7}' baidu.log|sort|uniq -c|sort -nr|head -10

9、找出抓取的404错误页面
复制代码 代码如下:

awk ‘$9~ /^404$/ {print $7}' baidu.log|sort|uniq|sort -nr

10、找出抓取了多少js文件和文件抓取的次数
复制代码 代码如下:

awk ‘$7~ /.js$/ {print $7}' baidu.log|sort|uniq -c |sort -nr

相关文章

  • Shell函数的7种用法介绍

    Shell函数的7种用法介绍

    这篇文章主要介绍了Shell函数的7种用法介绍,本文讲解了在shell文件内部定义函数并引用、返回值、函数输出、向函数传递参数、全局变量与局部变量等内容,需要的朋友可以参考下
    2014-11-11
  • Shell脚本数组用法小结

    Shell脚本数组用法小结

    这篇文章主要介绍了Shell脚本数组用法小结,本文讲解了数组声明、数组遍历、获取数组长度、删除数组元素、数组切片等内容,需要的朋友可以参考下
    2014-09-09
  • Shell脚本查看网卡实时流量

    Shell脚本查看网卡实时流量

    这篇文章主要介绍了Shell脚本查看网卡实时流量,本文直接给出实现代码,需要的朋友可以参考下
    2014-12-12
  • 完美解决mac环境使用sed修改文件出错的问题

    完美解决mac环境使用sed修改文件出错的问题

    下面小编就为大家带来一篇完美解决mac环境使用sed修改文件出错的问题。
    2017-04-04
  • Shell脚本中if条件判断的写法实例

    Shell脚本中if条件判断的写法实例

    在写shell脚本的过程中,用到了if else的写法,突然有多个参数需要判断,那么就想到了if else if的用法,这篇文章主要给大家介绍了关于Shell脚本中if条件判断写法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-01-01
  • linux Shell脚本里面把一个数组传递到awk内部进行处理

    linux Shell脚本里面把一个数组传递到awk内部进行处理

    这篇文章主要介绍了linux Shell脚本里面把一个数组传递到awk内部进行处理,需要的朋友可以参考下
    2016-12-12
  • linux文件目录默认权限(详解)

    linux文件目录默认权限(详解)

    下面小编就为大家带来一篇linux文件目录默认权限(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • Linux 查看端口的占用情况并找出并杀死占用进程的方法

    Linux 查看端口的占用情况并找出并杀死占用进程的方法

    这篇文章主要介绍了Linux 查看端口的占用情况并找出并杀死占用进程的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-08-08
  • 详解如何在Linux中创建和使用别名命令

    详解如何在Linux中创建和使用别名命令

    Linux 用户经常需要反复使用一个命令,一遍又一遍地键入或复制相同的命令会降低您的工作效率并分散您对应该做的事情的注意力,这个时候我们可以通过为最常用的命令创建别名来节省一些时间,接下来将给大家介绍一下如何在Linux中创建和使用别名命令
    2023-07-07
  • Shell中实现整数自增的几种方法示例

    Shell中实现整数自增的几种方法示例

    Linux Shell中写循环时,常常要用到变量的自增,下面这篇文章主要给大家分享了关于Shell中实现整数变量自增的几种方法,包括declare -i来声明、使用let命令、使用(())以及使用expr命令等等方法,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-08-08

最新评论