Liunx - 查看日志最实用命令和方法

liunx - 查看日志最实用命令和方法


  线上出现了问题,登上线上的机器查日志是非常常见的操作了。我第一次登上线上机器查日志的时候,我还只记得以下的几个命令(假设现在我们的日志文件叫做 service.log):

  • cat service.log
  • tail -f service.log
  • vim serivice.log

  如果是小文件的话,单纯的 cat 命令还是可以应付的,但如果你直接用 cat 命令打开一个1GB的日志文件,保证卡死你(ctrl + c退出 cat 命令需要很久才能将 cat 命令停下来)。

一般可用 cat 来查看这个小文件的文本内容是什么

  同样地,如果是小文件,单纯的 vim 命令去打开文件也是可以应付的,但如果你用 vim 命令去打开一个1GB甚至更大的文件,也能明显感受到缓慢和卡顿。

  平时我还是很喜欢用 vim 去查找对应的记录的,我一般的操作:

  • vim service

  • G 跳转到文件的末尾

  • ? +关键字 搜索对应的记录

  • n 往上查询,按 N 往下查询

tail -f service.log 这个命令我一般用于查看流量是否进来了(或者调试的时候可以直接看到日志,再迅速 ctrl +c 关掉)

  面对比较大的日志文件,这我们就得配合 grep 来玩了,比如我们现在得知某个手机号收不到短信验证码,想要看一下这个手机号的日志是怎么样的。于是我们就可以这样搞:

  • cat service.log | grep 13888888888

这么一搞,就能将 service.log 中所有含有 13888888888 的记录给搜出来,搜索的速度还是贼快的。

  现在我们已经能根据关键字搜到对应的记录了,接着我想看一下那条记录的日志上下文【这样就能知道这条数据大概的执行状态了】

  首先,我们先要查出对应记录的行号,在 cat 命令后面加上一个 -n 参数就好了。所以命令是: cat -n service.log | grep 13888888888 ,如下图我们就可以查到对应的行号了

现在行数是29506,我们一般只要看一下29506的前10行和后10行就差不多知道问题出现在哪了,于是我们可以这样做:

  • sed -n "29496,29516p" service.log :从29496行开始检索,到29516行结束

  • cat -n service.log | tail -n +29496 | head -n 20:从29496行开始检索,往前推20条

如果关键字不太准确(日志输出的记录太多了),我们可以使用 more 命令来浏览或者输出到文件上再分析:

  • cat service.log | grep 13 |more :将查询后的结果交由more输出

  • cat service.log | grep 13 > /home/sanwai/aa.txt 将查询后的结果写到/home/sanwai/aa.txt文件上

有的时候,我们想统计这个日志输出了多少行,我们可以使用这条命令:

  • cat service.log | wc -l

参考链接

©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页