后台日志分析常用方法探索

3,234 阅读6分钟

一. 前言

作为测试工程师,为了更好地找bug并定位问题的来龙去脉,针对后台日志做定位分析是一项很重要的技能。
测试的日常工作就是和开发大佬们battle,battle的时候需要证据,而证据就是程序运行时所报的错误。
下面就让我带大家去逛逛新世界。

二. 查看日志

大家熟知的查看日志的命令一般有:

  • cat
  • tail
  • vi(或vim)
  • head
  • more
  • less

关于这些命令的用法大家可以直接查看Linux官方文档:www.linuxcool.com/
或者推荐Linux菜鸟教程:www.runoob.com/linux/linux…

示例一:cat

在搜索输入框中输入对应的命令cat,手册支持模糊匹配查询
可以看到cat命令的定义是:在终端设备上显示文件内容

参数说明:

cat [-AbEnTv] [文件] 
参数:
-A : 相当于-vET 的整合参数,可列出一些特殊字符,而不是空白而已
-b :列出行号,仅针对非空白行做行号显示,空白行不标行号
-E :将结尾的断行字符$显示出来
-n : 打印行号,连同空白行也会有行号,与-b的参数不同

参考实例:

1.查看文件的内容:
[root@linuxcool ~]# cat filename.txt

2.查看文件的内容,并显示行数编号:
[root@linuxcool ~]# cat -n filename.txt

3.常用:快速搜索到并匹配redis关键字
[root@linuxcool ~ ]  cat -n file | grep redis

适用场景:

cat是Concatenate的缩写,主要功能是将一个文件的内容连续显示在屏幕上面。
一般文件内容行数较少时,如40行之内,适合用cat。
注意:当文件内容较大时,文本内容会在屏幕上快速闪动(滚屏),用户往往看不清所显示的具体内容。因此对于较长文件内容可以按Ctrl+S键,停止滚屏;以及Ctrl+Q键可以恢复滚屏;而按Ctrl+C(中断)键则可以终止该命令的执行。或者对于大文件,干脆用more命令吧!

扩展:

tac : 从最后一行开始显示
tac 的功能跟cat相反,cat是由“第一行到最后一行连续显示在屏幕上”,而tac则是“由最后一行到第一行反向在屏幕上显示出来”

示例二:tail

定义:

tail 命令定义:查看文件尾部内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。

参数说明:

tail [参数] [文件]  
-f 循环读取
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示文件的尾部 n 行内容

参考实例:

1.显示文件file的最后10行:
[root@linuxcool ~ ]  tail file
或者:tail -n 10  file

2.显示文件file的内容,从第20行至文件末尾:
[root@linuxcool ~ ]  tail +20 file 

3.显示文件file的最后10个字符:
[root@linuxcool ~ ]  tail -c 10 file

4.一直变化的文件总是显示后10行:
[root@linuxcool ~ ]  tail -f 10 file

5.常用:查看文件尾部5行数据,并实时刷新数据
[root@linuxcool ~ ]  tail -f -n 5 file

6.常用:持续检测file的内容,并匹配redis关键字。匹配关键字,一般用grep ,tail 一般也会跟grep 搭档使用
[root@linuxcool ~ ]  tail -f file | grep redis

适用场景:

tial -f 被用来动态监听后台日志,开发联调经常使用到,它一般跟grep 一起搭档使用。

示例三:vi(或vim)

定义:

vi 命令定义:vi命令是linux系统字符界面下的最常用的文本编辑器。

参考实例:

1.vim打开文件后,总是需要去查找对应的内容:
按G跳转到文件的末尾
按? +关键字搜索对应的记录
按n往上查询,按N往下查询

示例四:head

定义:

head 命令定义:显示文件开头内容。以行为单位,默认文件开头的前10行。

参数说明:

head [参数] [文件]  
-n<行数> 显示的行数
-q 隐藏文件名
-v 显示文件名
-c<字节> 显示字节数

参考实例:

1.显示前3行文件内容:
[root@linuxcool ~]# head -n 3 file

2.显示文件名信息,并显示文件前两行:
[root@linuxcool ~]# head -v -n 2 file 

3.显示文件前5个字符:
[root@linuxcool ~]# head -c 5 file 

示例五:more

定义:

more 命令定义:显示文本文件内容。more命令用于将内容较长的文本文件内容(不能在一屏显示完)进行分屏显示,并且支持在显示时定位关键字。而对于内容较少的文本文件内容则推荐使用cat命令查看。

参数说明:

more [参数] [文件]  
-num :一次显示的行数
-p :不以卷动的方式显示每一页,而是先清除萤幕后再显示内容
-c : 跟 -p 相似,不同的是先显示内容再清除其他旧资料
-s : 当遇到有连续两行以上的空白行,就代换为一行的空白行
+/pattern : 在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示
-u :不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同)
+num : 从第 num 行开始显示
fileNames :欲显示内容的文档,可为复数个数

参考实例:

1.显示一页:
[root@linuxcool ~]# more file

2.一页显示10行:
[root@linuxcool ~]# more -n 10 file 

3.空格键代表往下翻一页

4.Enter代表往下滚动一行

5./字符串:代表在这个显示的内容当中,向下查询“字符串” 这个关键字

6.按b往回翻页

7.q :代表立刻离开more,不再显示该文件内容

适用场景:

more使用日志比较大的文件查看,可以一页一页查看,不会让前面的数据看不到。

示例六:less

定义:

less 命令定义:分页显示工具。浏览文字档案的内容,用less命令显示文件时,PageUp键向上翻页,PageDown键向下翻页,要退出less程序,应按Q键。
less的作用与more十分相似,不同点为less命令允许用户向前或向后浏览文件,而more命令只能向前浏览 。

参数说明:

less [参数] [文件]  
跟more类似

参考实例:

1.显示一页:
[root@linuxcool ~]# less file

2.空格键代表往下翻一页

3.[pagedown]向下翻动一页

4.[pageup]向上翻动一页

5.Enter代表往下滚动一行

6.y :向前滚动一行

7./字符串:向下搜索"字符串"的功能

8.?字符串:向上搜索"字符串"的功能

9.按b往回翻页

10.q :代表立刻离开more,不再显示该文件内容

适用场景:

less适合日志比较大的文件查看,可以一页一页查看,并且比more更灵活,也可以动态查看日志

三. 小结

本文总结了在后台日志分析过程中经常要用到对几个linux命令。
其中tail,less真的很适合日常开发日志查看,非常推荐。

四. 参考与感谢