前言

我们在排查测试环境或者生产环境时,离开不了查看日志,分析问题,那么我们通过什么命令去排查呢,别人给我们一个错误的信息,我们怎么能够快速的定位到相应的地方,下面就是我们要讨论的问题。


快速入门

1.实时查看日志文件中的数据

$ tail -f test.log

2.根据错误Id或者关键字进行搜索定位日志行数
cat -n 日志文件 | grep “错误Id或者行数”

$ cat -n test.log | grep "592431cd9c894bf7a79244b430b0f78a"

3.知道错误的位置行数(a行)之后,我们可以根据查看着行日志之后的第b行
cat -n 日志文件 | tail -n +a | head -n b

// 查看日志文件中的第100行之后的1000行日志
$ cat -n test.log | tail -n +100 | head -n 1000

命令详解

Linux查看命令有多种:tail,head,cat,tac,more

1.tail命令

相关参数:

1)-f 循环读取
2)-q 不显示处理信息
3)-v 显示详细的处理信息
4)-c<数目> 显示的字节数
5)-n<行数> 显示行数

相关应用

//查看实时日志
$ tail -f test.log

//查看最后100行日志记录
$ tail -100f test.log

//查询日志尾部最后10行的日志
$ tail -n 10 test.log

//查询10行之后的所有日志
$ tail -n +10 test.log

//循环实时查看最后100行记录
$ tail -fn 100 test.log
2.head命令

解释:

head命令是查看日志多少行之后的命令

相关应用:

//查询日志文件中的前10行日志
$ head -n 10 test.log

//查询日志文件除了最后10行的其他所有日志
$ head -n -10 test.log
3.cat命令

参数:

1)-n 由1开始对所有输出的行数编号
2)-b 和-n相似,只不过对于空白行不编号
3)-s 当遇到有连续两行以上的空白行,就代换为一行的空白行
4)-c<数目> 显示的字节数
5)-n<行数> 显示行数

相关应用:

//输出test.log 文件最后1000行
$ cat test.log | tail -n 1000 

//得到关键日志的行号
$ cat -n test.log |grep “debug” 

//从第3000行开始,显示1000行。即显示3000~3999行
$ cat filename | tail -n +3000 | head -n 1000 

//显示1000行到3000行
$ cat filename| head -n 3000 | tail -n +1000

//把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里
$ cat -n textfile1 > textfile2 

//把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里
$ cat -b textfile1 textfile2 >> textfile3 
4.tac命令

解释:

tac是将cat反写过来,它的功能跟cat相反,cat是由第一行到最后一行连续显示,而tac是由最后一行到第一行反向显示。

5.more命令

解释:

类似cat,不过以一页一页形式显示。基本指令按空白键(space)往下一页显示,按返回键(back)往上一页显示,还有字符搜索功能(与vi相似)

参数:

1)-num 一次显示的行数
2)-d 提示使用者,在画面下方显示 [Press space to continue, ‘q’ to quit.] ,如果使用者按错键,则会显示 [Press ‘h’ for instructions.] 而不是 ‘哔’ 声
3)-l 取消遇见特殊字元 ^L 时会暂停的功能
4)-f 计算行数时,以实际上的行数,而非自动换行过后的行数
5)-p 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容
6)-c 跟 -p 相似,不同的是先显示内容再清除其他旧资料
7)-s 当遇到有连续两行以上的空白行,就代换为一行的空白行
8)-u 不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同)
9)+/pattern 在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示
10)+num 从第 num 行开始显示

相关应用:

//逐页显示日志,如有连续两行以上空白行则以一行空白行显示
$ more -s test.log	

//从第 20 行开始显示日志内容
$ more +20 test.log	
6.grep 命令

解释:

有时候往往在排查生产环境或者测试环境问题时,测试人员或者软件使用者就给我们一个报错id或者报错订单号等信息,我们需要通过关键字进行查找,这时候grep命令可以快速的帮我们进行定位查找。

相关应用:

//根据某订单号查询日志
$ more joint.log | grep ‘RN202102051020111983’

//打印匹配行的前后5行
$ more joint.log | grep -5 ‘RN202102051020111983’

//打印匹配行的前后5行
$ more joint.log | grep -C 5 ‘RN202102051020111983’

//打印匹配行的后5行
$ more joint.log | grep -A 5 ‘RN202102051020111983’ 

//打印匹配行的前5行
$ more joint.log | grep -B 5 ‘RN202102051020111983’ 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐