Linux系统诊断必备技能之二:日志查询常用命令详解
一、概述
日常运维工作中,排查线上环境问题,少不了去线上查日志。而使用什么命令,能快速准确地查到我们需要查找地日志信息,也是我们需要掌握的一项技能。下面介绍一下日常工作常用到的查看日志命令:tail,head,cat,tac,more,less。
二、命令详解
1、tail 命令
参数: 1)-f 循环读取 2)-q 不显示处理信息 3)-v 显示详细的处理信息 4)-c<数目> 显示的字节数 5)-n<行数> 显示行数
常用命令演示:
命令 | 含义 |
---|---|
tail -f test.log | 查看实时日志 |
tail -100f test.log | 查看最后100行日志记录 |
tail -n 10 test.log | 查询日志尾部最后10行的日志 |
tail -n +10 test.log | 查询10行之后的所有日志 |
tail -fn 100 test.log | 循环实时查看最后100行记录 |
2、 head 命令
head命令的功能跟tail是相反的,是查看最前的日志信息,tail是查看后多少行日志。
命令 | 含义 |
---|---|
head -n 10 test.log | 查询日志文件中的前10行日志 |
head -n -10 test.log | 查询日志文件除了最后10行的其他所有日志 |
3、cat 命令
功能
1)一次显示整个文件。 cat filename
2)创建一个文件。 cat > filename
3)将几个文件合并为一个文件。 cat file1 file2 > file
参数:
1)-n 由1开始对所有输出的行数编号
2)-b 和-n相似,只不过对于空白行不编号
3)-s 当遇到有连续两行以上的空白行,就代换为一行的空白行
4)-c<数目> 显示的字节数
5)-n<行数> 显示行数
应用
命令 | 含义 |
---|---|
cat test.log | tail -n 1000 | 输出test.log 文件最后1000行 |
cat -n test.log |grep “debug” | 得到关键日志的行号 |
cat filename | tail -n +3000 | head -n 1000 | 从第3000行开始,显示1000行。即显示3000~3999行 |
cat filename| head -n 3000 | tail -n +1000 | 显示1000行到3000行 |
cat -n textfile1 > textfile2 | 把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里 |
cat -b textfile1 textfile2 >> textfile3 | 把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里 |
4、tac 命令
tac是将cat反写过来,它的功能跟cat相反,cat是由第一行到最后一行连续显示,而tac是由最后一行到第一行反向显示。
5、more 命令
类似cat,不过以一页一页形式显示。基本指令按空白键(space)往下一页显示,按返回键(back)往上一页显示,还有字符搜索功能(与vi相似)
参数 -num 一次显示的行数 -d 提示使用者,在画面下方显示 [Press space to continue, ‘q’ to quit.] ,如果使用者按错键,则会显示 [Press ‘h’ for instructions.] 而不是 ‘哔’ 声 -l 取消遇见特殊字元 ^L 时会暂停的功能 -f 计算行数时,以实际上的行数,而非自动换行过后的行数 -p 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容 -c 跟 -p 相似,不同的是先显示内容再清除其他旧资料 -s 当遇到有连续两行以上的空白行,就代换为一行的空白行 -u 不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同) +/pattern 在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示 +num 从第 num 行开始显示
应用
命令 | 含义 |
---|---|
more -s test.log | 逐页显示日志,如有连续两行以上空白行则以一行空白行显示 |
more +20 test.log | 从第 20 行开始显示日志内容 |
6、grep 命令
上面几个命令都是用在查找文件内容时比较方便,而在查找文件时,我们往往需要通过某些关键字查找,grep命令就可以帮助我们实现快速查找。
应用:
[root@localhost ~]# more /var/log/dmesg |grep 'XFS' //根据某退货号查询日志