日志查询常用命令
1、tail
命令格式: tail [必要参数] [选择参数] [文件]
-f 循环读取
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示行数
-q, --quiet, --silent 从不输出给出文件名的首部
-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒
tail -n 100 catalina.out 查询日志尾部最后100行的日志;
tail -n +100 catalina.out 查询100行之后的所有日志;
tail -fn 100 catalina.out 循环实时查看最后100行记录(最常用的)
配合着grep用, 例如 : tail -fn 100 catalina.out | grep -- '关键字'
如果一次性查询的数据量太大,可以进行翻页查看
tail -n 6000 catalina.out | more -100 可以进行多屏显示(ctrl + f 或者 空格键可以快捷键)
2、head
head -n 10 catalina.out //查询日志文件中的头10行日志;
head -n -10 catalina.out //查询日志文件除了最后10行的其他所有日志;head其他参数与tail
3、cat
$ cat filename // 一次显示整个文件
$ cat -n test.log | grep 'error' 查询日志中含有某个关键字的信息,显示出行号
$ cat > filename //从键盘创建一个文件
$cat file1 file2 > file //将几个文件合并为一个文件,只能创建新文件,不能编辑已有文件.
$cat -n textfile1 > textfile2 //将一个日志文件的内容追加到另外一个 :
$cat : >textfile2 // 清空一个日志文件
4、sed
sed -n '/开始时间日期/,/结束时间日期/p' all.log
$sed -n '/2019-10-24 22:16:21/,/2019-10-24 22:16:59/p' all.log
注意:如果开始时间日志里面是没有的,那么查询结果为空,如果结束时间日志里面是没有的,查询的结果就是开始时间到最后的全部日志
5、more、less
more, less 都具备查找功能,按/ 然后输入要找的字串,再按 Enter 即可,按 n(next) 会继续找,大写的 N 则是往回(上)找,按 q(quit)或者ZZ离开
6、查询场景
场景1: 按行号查看---过滤出关键字附近的日志
通常,用grep获得的日志信息很少,此时需要查看附近的日志
首先,得到关键日志的行号
cat -n test.log | grep "error"
如,获得"error"关键字所在的行号是12行. 此时如果我想查看这个关键字前10行和后10行的日志
cat -n test.log | tail -n +10 | head -n 20
tail -n +10 表示查询10行之后的日志
head -n 20 则表示在前面的查询结果里再查前20条记录
场景2:查看指定时间段内的日志
sed -n '/2017-02-23 10:00:00/,/2017-02-23 10:06:23/p' test.log
sed -n '/2017-02-23 10:00:/,/2017-02-23 10:06:/p' test.log
注意:如果开始时间日志里面是没有的,那么查询结果为空,如果结束时间日志里面是没有的,查询的结果就是开始时间到最后的全部日志
grep "2017-02-23 10:00" test.log
场景3:查看日志中特定字符的匹配数目
grep "abcd" test.log | wc -l
场景4:实时查看日志
tail -f test.log
场景5:查询最后20行,并查找关键字“结果”
tail -n 20 test.log | grep '结果'
场景6:查询最后20行,并查找关键字“结果”,文字标红
tail -n 20 test.log | grep '结果' --color
场景7:查询最后20行,并查找关键字“结果”,文字标红,上下扩展两行
tail -n 20 test.log | grep '结果' --color -a2
场景8:分页查看,使用空格翻页(使用more/less)
cat -n test.log | grep "error" | more
场景9:日志文件超大时,怎么查看日志
可以参考:https://blog.csdn.net/stupid56862/article/details/93330203