美文网首页
Linux查看日志常用命令

Linux查看日志常用命令

作者: renmen2000 | 来源:发表于2020-04-22 15:43 被阅读0次

    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查看日志常用命令

          本文链接:https://www.haomeiwen.com/subject/rawiihtx.html