日志分析常用指令简单介绍

大型分布式网站架构设计与实践的第四章的简单回顾

日志分析常用的指令:

  1. 查看文件的内容:cat,(适合日志文件比较大)cat –n install.log (-n表示显示行号)
  2. 分页显示文件:more,(cat缺少交互,只能用来查看,more可以更好的用来分页显示文件,Enter显示下一行,空格键显示下一页,按F键显示下一屏,B返回上一屏内容)  less是more更强大的交互工具
  3. 显示文件尾:tail,    tail  -n install.log (-n表示显示最后的行数) (-f 表示tail程序不退出,新写入的行会实时显示出来)
  4. 显示文件头:head,      head  -n install.log(-n表示显示最开始的行数)
  5. 内容排序 :sort ,  sort  –k  2  –t  ‘  ’  -n  -r  install.log (-k用来指定排序的列,这里指定的是第二列,-t用来指定列分隔符,这里的分隔符是空格,-n表示按照数字顺序排序,-r表示按照逆序排列)
  6. 字符统计:wc,  -l用来统计文件中的行数,-w用来统计文件中单词数,-c用来统计文件中的字节数,-L用来统计文件中最长的行的长度
  7. 查看重复出现的行:uniq,用来显示文件中行重复的次数,或者显示仅出现一次的行,或者仅显示重复出现的行,并且uniq的去重针对的只是连续的两行,因此常常与sort结合起来用,sort install.log | uniq –c (uniq去重显示,-c在每一行前面加上该行出现的次数,-u仅显示出现一次的行,-d仅显示重复的行)
  8. 字符串查找:grep, grep qq install.log (qq就是要匹配的字符串,-c统计匹配的行数,支持正则表达式查找)
  9. 文件查找:find,locate,whereis,which,find . –name install.log(find查找的当前路径下的名字为install.log的文件,find进行的是磁盘查找,locate是根据每个文件对应的数据库中的路径进行查找,whereis也是针对的文件对应的数据库中的路径进行查找,不过对应的二进制,which是根据系统环境变量路径查找)
  10. 表达式求值:expr,expr后面加上表达式就可以计算结果,不过*需要就进行转义,shell不识别*
  11. 归档文件:tar,-f指定包的名称,-c生成新的包,-t列出包里面的文件的名称
  12. URL访问工具:curl,
  13. 查看请求的访问量:                                                         如访问量排名前10的IP地址:                                                cat access.log | cut –f1 –d “ “ | sort | uniq –c | sort –k 1 –n –r | head -10                  页面的访问量排名前十url:                                                          cat access.log | cut –f4 –d “ ” | sort | uniq –c | sort –k 1 –n –r | head -10
  14. 查看最耗时的页面:cat access.log | sort –k -2 –n –r | head -10
  15. 统计404请求的占比:使用awk指令 export total_line=’wc –l access.log |cut –f1 –d “ “’ &&export not_found_line=’awk ‘$6==’404’{print $6}’ access.log | wc –l’ && expr &not_found_line \*  100 / $tatoal_line

日志分析脚本:

  1. sed编辑器:sed,sed是流编辑器,并且sed并不会修改文件本身,除非使用重定向存储文件,所以sed是比较安全的。                                                 sed  “s/xxx/yahoo/”  access.log | head -10(s表示把旧的字符串xxx替换成新的yahoo) sed  -n “2,6p” access.log (-n表示只输出指定的行,2,6p表示打印第二行到第六行之间的行)                                                                   sed “/qq/d” access.log(d表示文件的删除行指令,将包含qq的行删掉)               sed “=” access.log (=用来显示文本的行号)                                      sed –e “i\head” access.log (i用来在行首插入内容,i\head在每行前面都插入head)     sed –e “a\end” access.log(a用来在行尾追加内容,a\end表示在每行后面追加end)      sed –e “/google/c\hello” access.log(c替换操作,查找包含google的行,用hello替换)     sed –n “1,5p;1,5=” access.log(把多行指令合并,用分号隔开,打印一到五行,并显示行号) sed –n –f test access.log还可以把指令写到文件里(指令都写到了test文件,用-f指定)
  2. awk程序,可以提供一种编程语言来进行查询                                              awk  ‘{print $1}’ access.log(print用来格式化输出,支持转义字符,$1表示第一列)            awk ‘/google/{print $5,$6}’ access.log | head -10(包含google行,然后打印他的第五、六列)  awk ‘length($0)>40 {print $3}’ access.log | head -10  $0表示当前行,length($0)用来获取当前行的长度,然后打印出符合条件的行的第三列      也可对内容格式化输出,也可以将awk程序写到文件里
  3. shell
时间: 2024-10-05 10:11:45

日志分析常用指令简单介绍的相关文章

Javac源码简单分析之Javac简单介绍

一.简单介绍 javac 是java语言编程编译器.javac工具读由java语言编写的类和接口的定义,并将它们编译成字节代码的class文件. 二.源码获取 OpenJDK6源码:http://download.java.net/openjdk/jdk6/ Javac的源码就在OpenJDK源码里面. 或者在CSDN下载:http://download.csdn.net/detail/p_3er/7383741 三.Javac的包 Javac的公共入口点是com.sun.tools.javac

日志存储系统常用技术方案介绍

日志存储系统常用技术方案有两种:一是log4j/logback+mongodb的方式,一种是基于ELK的日志存储系统. 日志一般存储在数据库和文件系统中.日志数据要和生产正式库分开存储,否则会影响正式库的运行,带来隐患.另外,为了防止日志存储性能问题,后期可以考虑采用异步的消息队列形式进行存储. 下面详细讲解. 1.便捷的日志存储方式log4j+mongodb 1)安装和配置简介 需要引入的jar包有:Mongo Java driver.Log4J(1.2.16以上版本).log4mongo-j

日志分析常用命令

下面这3个命令是非常好用的日志分析命令,以apache的日志文件access_log为例 1访问次数最多的IP TOP10 当网络流量突然持续异常时,很有可能是有恶意访问,最快的解决方式就是找出访问量最多的几个ip,暂时禁止其访问,然后再仔细观察 # cat access_log | cut -f1 -d " " | sort | uniq -c | sort -k 1 -n -r | head -10 2被访问次数最多的URL TOP10 了解哪些Url资源的访问量最大,可以帮助我们

linux常用命令简单介绍(netstat,awk,top,tail,head,less,more,cat,nl)

1.netstat netstat -tnl | grep 443 (查看443端口是否被占用) root用户,用netstat -pnl | grep 443 (还可显示出占用本机443端口的进程PID). -a (all)显示所有选项,默认不显示LISTEN相关 -t (tcp)仅显示tcp相关选项 -u (udp)仅显示udp相关选项 -n 拒绝显示别名,能显示数字的全部转化成数字.直接使用IP地址,而不通过域名服务器. -l 仅列出有在 Listen (监听) 的服務状态 -p 显示建立

Linux_常用命令简单介绍(netstat,awk,top,tail,head,less,more,cat,nl)

1.netstat netstat -tnl | grep 443 (查看443端口是否被占用) root用户,用netstat -pnl | grep 443 (还可显示出占用本机443端口的进程PID). -a (all)显示所有选项,默认不显示LISTEN相关 -t (tcp)仅显示tcp相关选项 -u (udp)仅显示udp相关选项 -n 拒绝显示别名,能显示数字的全部转化成数字.直接使用IP地址,而不通过域名服务器. -l 仅列出有在 Listen (监听) 的服務状态 -p 显示建立

linux常用函数简单介绍

mmap函数简介: mmap函数是unix/linux下的系统调用,来看<Unix Netword programming>卷二12.2节对mmap的介绍: The mmap function maps either a file or a Posix shared memory object into the address space of a process.We use this function for three purposes: 1. with a regular file t

opencv源代码分析:icvGetTrainingDataCallback简单介绍

/* *函数icvGetTrainingDataCallback介绍 *功能:对全部样本计算特征编号从first開始的num个特征,并保存到mat里. *输入: *CvMat* mat矩阵样本总数个行,num个列.保存每一个样本的num个特征值. *First:特征类型编号的開始处 *Num:要计算的特征类型个数. *Userdata:积分矩阵和权重.特征模板等信息. *输出: *CvMat* mat矩阵样本总数个行.num个列.保存每一个样本的num个特征值. */ static void i

invlpg 指令简单介绍

void tlb_invalidate(pde_t *pgdir, void *va) { // Flush the entry only if we're modifying the current address space. // For now, there is only one address space, so always invalidate. invlpg(va); } 遇到这样一段code...然后invlpg是个什么东东 这是个C的嵌入汇编 内嵌汇编语法例如以下: __a

Linux日志分析常用命令汇总

1.查看当天有多少个IP访问: awk '{print $1}' log_file|sort|uniq|wc –l 2.查看某一个页面被访问的次数: grep "/index.php" log_file | wc –l 3.查看每一个IP访问了多少个页面: awk '{++S[$1]} END {for (a in S) print a,S[a]}' log_file 4.将每个IP访问的页面数进行从小到大排序: awk '{++S[$1]} END {for (a in S) pri