• Linux 应用程序日志查看命令


    目录

    前言

    需求

    命令

    1.tail命令

    2.head命令

    3.cat命令

    4.sed

    5.grep命令

    6.more命令

    7.less命令


    前言

    在工作过程中,需要查看服务端的日志,掌握常用的命令是开发工程师必备的技能,快速的查看到日志,才能精准定位问题所在。

    需求

    1.查看日志文件需求主要有以下几个

    • 服务启动后跟踪服务日志是否启动正常
    • 服务运行过程中查看是否打印具体的日志
    • 应用出现故障后通过检索关键字,定位系统问题和故障
    • 程序运行过程中出现性能问题需要借助日志排查定位

    2.查询范围需求

    • 从文件头开始检索关键字查询
    • 从文件尾部检索关键字查询
    • 从关键字检索的上下文查询,比较常用(如,检索发生错误的前后100行日志)

    命令

    Linux查看日志的命令有多种: tail、cat、tac、head、echo等,本文只介绍几种常用的方法。

    1.tail命令

    tail命令是最常见的日志查看命令,从文件末尾开始检索

    1. 命令格式: tail[必要参数][选择参数][文件]
    2. -f 循环读取
    3. -q 不显示处理信息
    4. -v 显示详细的处理信息
    5. -c<数目> 显示的字节数
    6. -n<行数> 显示行数
    7. -q, --quiet, --silent 从不输出给出文件名的首部
    8. -s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒

    用法如下:

    1. tail -n 10 test.log 查询日志尾部最后10行的日志;
    2. tail -n +10 test.log 查询10行之后的所有日志;
    3. tail -fn 10 test.log 循环实时查看最后10行记录(最常用的)

     一般还会配合着grep用,例如 :

     tail -fn 1000 test.log | grep '关键字'

    如果一次性查询的数据量太大,可以进行翻页查看,例如:

    tail -n 3000  test.log |more -1000 可以进行多屏显示(ctrl + f 或者 空格键可以翻页)

    分页查看前1000行

    tail -n 1000 catalina.out |more

     查找最新的10行中时间范围在2021-02-04 11:40-2021-02-04 11:49范围中的行

    tail -10f test.log | grep '2021-02-04 11:4[0-9]' 

    查看最新的10行中与关键字匹配的行加上匹配行后的5行

    tail -10f test.log | grep -A 5 [关键字] 

    2.head命令

    与tail相对应,从文件头开始检索

    1. head -n 10 test.log 查询日志文件中的头10行日志;
    2. head -n -10 test.log 查询日志文件除了最后10行的其他所有日志;

    3.cat命令

    该命令显示全部日志,如果文件比较大的话,不建议使用

    一次显示整个文件

    cat test.log

    创建一个文件

    cat > test.log

    将几个文件合为一个文件

    cat file1 file2 > newfile 只能创建新文件,不能编辑已有文件.

     将一个日志文件的内容追加到另外一个文件末尾

    cat -n textfile1 > textfile2

    清空一个日志文件,注意:> 意思是创建,>>是追加。

    cat : >textfile2

    其他命令,查看关键字前后指定行数,并显示行号

    1. cat test.log | head -n 50 #查看日志前50行
    2. cat -n test.log | tail -n 50 #查看日志后50行,并显示行号
    3. cat -n test.log | grep -C 10 '关键字' (显示日志里匹配字串那行以及前后10行),并显示行号
    4. cat -n test.log | grep -B 10 '关键字' (显示匹配字串及前10行),并显示行号
    5. cat -n test.log | grep -A 10 '关键字' (显示匹配字串及后10行),并显示行号
    6. cat -n test.log | grep -n -B10 -A10 "关键字" (显示日志里匹配字串那行以及前后10行),并显示行号
    7. cat test.log |tail -n +1000|head -n 500 查看日志,从第1000行开始,显示500行
    8. cat test.log | head -n 1400| tail -n +1350 查看日志,显示1350行到1400行

    4.sed

    sed命令可以查找日志文件特定的一段 , 根据时间的一个范围查询,可以按照行号和时间范围查询

    按照行号

    sed -n '5,10p' filename 这样你就可以只查看文件的第5行到第10行。

    按照时间段

    查看某段时间内的日志: sed -n '/起始时间/,/结束时间/p' 日志文件,

    查看某段时间内的关键字日志:sed -n '/起始时间/,/结束时间/p' 日志文件| grep ‘keyword’

    sed -n ‘/2018-06-21 14:30:20/,/2018-06-21 16:12:00/p’ catalina.out | grep ‘keyword’

    5.grep命令

    linux中最为常用的三大文本(awk,sed,grep)处理工具,grep家族总共有三个:grep,egrep,fgrep。

    grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。 

    grep表示全局正则表达式版本,它的使用权限是所有用户。

    1. grep '关键字' biz.log #查找log带‘关键字’的日志内容
    2. grep '关键字' biz.log -c #查看log中带‘关键字’日志内容的行数
    3. grep '关键字' biz.log | grep '关键字2' #查看log既带‘关键字’又带‘关键字2’的日志内容
    4. grep -v '关键字' biz.log #查看log不带‘关键字’的日志内容
    5. grep '关键字' biz.log | grep -v '关键字2' #查看log带'关键字',但不带'关键字2'的日志内容
    6. grep '关键字1\|关键字2' biz.log 或 grep -E "关键字1\|关键字2" biz.log #查询带`关键字1`或`关键字2`的日志内容
    7. #语法:
    8. grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]

    6.more命令

    more命令是一个基于vi编辑器文本过滤器,它以全屏幕的方式按页显示文本文件的内容,支持vi中的关键字定位操作。more名单中内置了若干快捷键,常用的有H(获得帮助信息),Enter(向下翻滚一行),空格(向下滚动一屏),Q(退出命令)。more命令从前向后读取文件,因此在启动时就加载整个文件。

    该命令一次显示一屏文本,满屏后停下来,并且在屏幕的底部出现一个提示信息,给出至今己显示的该文件的百分比:–More–(XX%)

    more的语法:more 文件名

    Enter 向下n行,需要定义,默认为1行

    Ctrl f 向下滚动一屏

    空格键 向下滚动一屏

    Ctrl b 返回上一屏

    = 输出当前行的行号

    :f 输出文件名和当前行的行号

    v 调用vi编辑器

    !命令 调用Shell,并执行命令

    q退出more

    7.less命令

    less命令在查询日志时,一般流程是这样的

    1. less log.log
    2. shift + G 命令到文件尾部 然后输入 ?加上你要搜索的关键字例如 ?1213
    3. 按 n 向上查找关键字
    4. shift+n 反向查找关键字
    1. less与more类似,使用less可以随意浏览文件,而more仅能向前移动,不能向后移动,而且 less 在查看之前不会加载整个文件。
    2. less log2013.log 查看文件
    3. ps -ef | less ps查看进程信息并通过less分页显示
    4. history | less 查看命令历史使用记录并通过less分页显示
    5. less log2013.log log2014.log 浏览多个文件

    常用命令参数 

    1. 常用命令参数:
    2. -b <缓冲区大小> 设置缓冲区的大小
    3. -g 只标志最后搜索的关键词
    4. -i 忽略搜索时的大小写
    5. -m 显示类似more命令的百分比
    6. -N 显示每行的行号
    7. -o <文件名> 将less 输出的内容在指定文件中保存起来
    8. -Q 不使用警告音
    9. -s 显示连续空行为一行
    10. /字符串:向下搜索"字符串"的功能
    11. ?字符串:向上搜索"字符串"的功能
    12. n:重复前一个搜索(与 / 或 ? 有关)
    13. N:反向重复前一个搜索(与 / 或 ? 有关)
    14. b 向后翻一页
    15. h 显示帮助界面
    16. q 退出less 命令

     history命令

    1. history // 所有的历史记录
    2. history | grep XXX // 历史记录中包含某些指令的记录
    3. history | more // 分页查看记录
    4. history -c // 清空所有的历史记录
    5. !! 重复执行上一个命令
    6. 查询出来记录后选中 : !323

  • 相关阅读:
    YOLO系列之yolov1解读(1)
    快捷键查询大全(包括VSCode、PyCharm 强烈建议收藏)
    Python算法——树的重建
    Glide系列(五) — Request 构建流程分析
    怎么就敢用NodeJS写千万级别的服务后端
    postgrsql psql命令 /var/run/postgresql/.s.PGSQL.5432无法访问
    (附源码)springboot优课在线教学系统 毕业设计 081251
    Codeforces Round #822 (Div. 2) C. Removing Smallest Multiples
    疯狂java 1.7垃圾回收机制
    【Java】day01 - Java基础语法
  • 原文地址:https://blog.csdn.net/smallbirdnq/article/details/133104908