Linux查看日志常用命令

1.查看日志可能使用到的命令介绍

tail

从尾部输出日志,-n 是显示行号;相当于nl命令;例子如下:

  • tail -100f test.log 实时监控100行日志

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

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

head

跟tail是相反的,head是看头部多少行日志:

  • head -n 10 test.log 查询日志文件中的头10行日志

  • head -n -10 test.log 查询日志文件除了最后10行的其他所有日志

cat

cat命令主要用来查看文件内容,创建文件,文件合并,追加文件内容等功能

  • cat f1.txt,查看f1.txt文件的内容

  • cat -n f1.txt,查看f1.txt文件的内容,并且由1开始对所有输出行进行编号

  • cat -b f1.txt,查看f1.txt文件的内容,用法与-n相似,只不过对于空白行不编号

  • cat f1.txt f2.txt,同时显示f1.txt和f2.txt文件内容,注意文件名之间以空格分隔,而不是逗号

  • cat -n f1.txt>f2.txt,对f1.txt文件中每一行加上行号后然后写入到f2.txt中,会覆盖原来的内容,文件不存在则创建它

  • cat -n f1.txt>>f2.txt,对f1.txt文件中每一行加上行号后然后追加到f2.txt中去,不会覆盖原来的内容,文件不存在则创建它

grep

文件搜索查找命令,可使用正则、统计搜索到的次数、高亮展示搜索到的关键字等功能

参数 描述
-e 使用正则搜索
-i 不区分大小写
-v 查找不包含指定内容的行
-w 按单词搜索
-c 统计匹配到的次数
-n 显示行号
-r 逐层遍历目录查找
-A 显示匹配行及后面多少行, 如: -A3, 则表示显示匹配行及后3行
-B 显示匹配行及前面多少行, 如: -B3, 则表示显示匹配行及前3行
-C 显示匹配行前后多少行, 如: -C3, 则表示显示批量行前后3行
--color 匹配到的内容高亮显示
--include 指定匹配的文件类型
--exclude 过滤不需要匹配的文件类型
#多文件查询
grep leo logs.log logs_back.log

#查找即包含leo又包含li的行
grep leo logs.log | grep li

#查找匹配leo或者匹配li的行
grep leo | li logs.log

#显示匹配行前2行
grep leo logs.log -A2

#显示匹配行后2行
grep leo logs.log -B2

#显示匹配行前后2行
grep leo logs.log -C2

#不区分大小写
grep -i leo logs.log

#使用正则表达式
grep -e '[a-z]\{5\}' logs.log

#查找不包含leo的行
grep -v leo logs.log

#统计包含leo的行数
grep -c leo logs.log

#遍历当前目录及所有子目录查找匹配leo的行
grep -r leo .

#在当前目录及所有子目录查找所有java文件中查找leo
grep -r leo . --include "*.java"

#查找并输出到指定文件
grep leo logs.log > result.log

#查找以leo开头的行
grep ^leo logs.log

#查找以leo结尾的行
grep leo$ logs.log

#查找空行
grep ^$ logs.log

sed

  • 工作原理: 先从文件中读取一行内容到模式空间里即sed专属的缓存空间,然后判断这行内容是否是需要处理的内容,如果不是就继续从文件中读取下一行,否则对改行内容进行相应处理后输出,然后继续读取下一行进行判断或处理,直到文件最后一行处理完毕整个过程结束
  • 命令格式:sed  参数  功能选项  文件名或其他标准输入
  • 参数:
功能 描述
a 追加内容到指定行后
i 插入内容到指定行前
d 删除指定行
c 用新行替换旧行(不常用)
s 对每一行第一次匹配到的内容进行替换,配合标志g可以将一行中所有匹配到的内容进行替换
p 输出指定内容,默认会输出2次匹配到的内容

使用举例见场景3

2.应用场景一:按行号查看---过滤出关键字附近的日志

  • cat -n test.log |grep "debug" 得到关键日志的行号

  • cat -n test.log |tail -n +92|head -n 20 选择关键字所在的中间一行. 然后查看这个关键字前10行和后10行的日志

    • tail -n +92表示查询92行之后的日志

    • head -n 20 则表示在前面的查询结果里再查前20条记录

3.应用场景二:根据日期查询日志

​ sed -n '/2014-12-17 16:17:20/,/2014-12-17 16:17:36/p' test.log

​ 特别说明:上面的两个日期必须是日志中打印出来的日志,否则无效;

​ 先 grep '2014-12-17 16:17:20' test.log 来确定日志中是否有该 时间点

4.应用场景三:日志内容特别多,打印在屏幕上不方便查看

  • 使用more和less命令,

​ 如: cat -n test.log |grep "debug" |more 这样就分页打印了,通过点击空格键翻页

  • 使用 >xxx.txt 将其保存到文件中,到时可以拉下这个文件分析

​ 如:cat -n test.log |grep "debug" >debug.txt

你可能感兴趣的:(Linux查看日志常用命令)