• 1
  • 0
分享
  • Linux系列之:9秒钟掌握多种实时查询日志的方法,再也不用cat命令
  • Carl_奕然 2022-11-01 10:51:28 字数 2571 阅读 1100 收藏 0

 1、引言

由于最近从某些企业毕业的同学很多,导致很多同学不得不投简历,找工作。

作为面试官的我,在最近也是没少忙活。

小屌丝:鱼哥,最近听说你最近睡得挺晚的。

小鱼:你咋知道, 你是不是在我的电脑安装了什么.... 

小屌丝:鱼哥,我这么正经, 怎么能干那么流氓的事情....  

小鱼:那你咋知道我睡得晚。

小屌:用脚指头就能想到, 最近上海有很多企业的同学毕业了,所以....会有一些毕业的同学约你帮忙看简历,聊聊面试技能之类的吧。

小鱼:嗯,最近在公司也面试了不少的同学,但是,这些同学的共性之一都是,对linux的命令不太熟, 

小屌丝:比方说呢?

小鱼:如何实时查询日志文件,如何同时实时查询两个日志文件呢?

小屌丝:这个我能想到, cat,tail 

小鱼:然后呢,

小屌丝:没有然后了.

小鱼:..... 

11.gif

其实关于Linux的命令,我专门写过一篇《[**吊打面试官系列之:掌握了这166个Linux常用命令,面试官果然被我征服了。。**](https://blog.csdn.net/wuyoudeyuer/article/details/126280418)》

有的同学私下反馈, 鱼哥,这么多命令,我好难背的哦。

唉~~~

为了照顾某些同学,我今天就对如何实时查询日志的方法,进行总结。

2、less

说道less, 我想,应该没人不知道吧

 - 分页显示文件内容,more命令的相反用法;

 - 多用于读取文本文件,

 - 用于读取实时被更改的文件

用法

less +F err.log  #+F 实时追踪更改的文件

说的没错,我们来演示一下,

  > 处于职业素养, 我把服务器重要信息 隐藏了

45ec2a1538c547419d16ab5beaf3623a.png

我们可以看到,日志很清晰的展示出来。

当然,如果退出视图的话, 按 q 就可以。 

3、tail

3.1 单文件实时查询

接着,我们就来说说tail呢。

关于tail,我们在平时也会经常的用到,也是很高频的一个linux命令。

我们想想一下,关于Linux常用的命令:

用法

tail -f err.log

c0aa5f9eccb34b3795389f67116c3027.png

 3.2 多文件实时查询

关于tail的用法,还有更厉害的。

如果我们既想看 error.log 文件,又想看info.log文件信息,

如何使用一行命令查看呢?

这里,tail就会解决你的困扰。

用法

tail -f err.log  -f  info.log

展示

f271adc711be427994b278c99415fd21.png

3.3 目标名称查询

如果你要查看的日志内容更新很快, 例如,info.log文件的内容肯定是刷刷的不停的更新,这个时候,就非常的不方便, 

小屌丝:这种情况,有没有解决办法呢?

小鱼:这还用说,必须的。 

tail + grep  可以帮你解决这个问题

用法

tail -f log_file | grep search_term

展示

289dc7c1add543c98554a162adabb5fc.png

如果出现的内容较多, 看着不方便,也可以解决的。

利用 grep -C  来显示查询结果的前后几行:

用法

tail -f log_file | grep -C 3 search_term

当然, 我们也可以查询多个名称

tail -f log_file | grep -C 3 -i - E 'search_term_one | search_term_two'

 3.4 跟踪日志

日志轮转(rotation)后的跟踪,这在大厂中很常见,尤其像这种 双十一大型活动,

日志的输出量是很多的。

如果实时跟踪日志文件, 就会占用资源,也可能会出现问题。

这个时候, tail的功能就体现出来了。

默认情况下,tail 命令用于文件描述符。如果当前日志文件被旋转,tail 命令现在将指向一个存档日志文件,该文件现在不会记录任何更改。

解决方案是按照日志文件的名称跟踪日志文件。这样,即使发生日志旋转,尾部也将指向当前日志文件(因为其名称从未更改)。

用法

tail --follow=name  error.log | grep -C 3 -i - E 'search_term_one search_term_two'

45ec2a1538c547419d16ab5beaf3623a (1).png

4、multitail

以上两个都是linux自带的,接下来介绍的,是需要安装的,即:**multitail**,

小屌丝:鱼哥,multitail是不是有什么特别的技能,

小鱼:何出此言?

小屌丝:否则,前两个介绍的都是Linux自带的,而multitail是需要安装的, 所以,一点有哪一点,打动了你,

小鱼:奈斯。multitail确实有打动我的点。

multitail的优点在于:可以拆分视图显示文件。

顾名思义,**可以同时显示多个文件, 也可以把每个文件拆分视图显示。**

4.1 安装

关于安装, 这里就简单提一下, 毕竟, 安装方式很简单。

安装依赖

[root@node1 tmp]# wget http://mirror.centos.org/centos/7/os/x86_64/Packages/ncurses-devel-5.9-14.20130511.el7_4.x86_64.rpm
[root@node1 tmp]# rpm -ivh ncurses-devel-5.9-14.20130511.el7_4.x86_64.rpm  --nodeps

安装multitail

wget https://www.vanheusden.com/multitail/multitail-6.5.0.tgz
tar xf multitail-6.5.0.tgz
cd multitail-6.5.0
make
echo $?
make install
echo $?

4.2 用法

multitail 的用法, 跟tail -f 一样, 

所以没有太多的复杂度,

用法

multitail file_1 file_2

默认显示最后100行。

不同之处在于:

使用 -s 选项拆分视图,后面跟一个数字,即视图的数量

用法

multitail -s 2  file_1 file_2

c1188a052614487e8453790c2f9b4e41.png

如果想学习更多multitail  的命令,可以使用 -h 来进行查看

multitail -h

5、总结

看到这里, 今天的分享差不多就结束了。 

关于实时查看日志的方式,还可以通过journal  命令。

如果感兴趣的你, 可以在深入研究journal  。

据说也是一个很不错的命令。

最后,再唠叨一句,我是奕然:

 - CSDN博客专家

 - 51Testing认证讲师


  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   虽然产品同学都知道要站在用户的角度设计产品,但事实是部分同学设计出来的产品真的是一言难尽,很多产品甚至只停留在将功能转换为原型图、流程图的层面。难道交互性强、用户体验好的产品都是别人家的?提高用户体验虽然是产品一贯的目标和宗旨,但是不同的实践方法和实现路径阻碍了好的产品设计。结合看了《用户体验多面手》的感想以及项目中的经历,总结了产品同学比较容易忽略的情况。  1、仅限于自己站在用户的角度,忽略了用户调研  他们知道要从用户的角度出发,思考如何设计一款满足用户需求的产品,但仅仅这样是不够的。每个人的想法都有局限性,给十个产品各自按照自己的偏好设计一款旅游app,得到的结果也是不尽相同的,那...
            0 0 950
            分享
          •   今天分享个小案例给大家,欢迎大家针对下面的案例,提出有不同的看法、不同的解决方案,期待你积极的参与哟~~  案(lai)例(lou):  A给B评审测试用例,A说:"服务器开关的case需要添加测试用例",B说:"这个不在测试范围内,之前开会的时候说了测试主要关注客户端测试,不进行服务器的相关测试,所以不需要添加测试用例"。  两人针对自己的内容反复强调,在工位上小声的争吵了半个小时(其中A用过举例子的方式,A事后觉得例子没有说服力),最后带着略有不满找到leader,让leader来解决  如果你是A,没有leader,你应该怎么解决?  如果你是...
            1 0 2723
            分享
          • 在过去的这个周末。接到了一个线上问题,描述如下:手动添加一个员工,然后进入线索管理编辑某个线索归属人,在下拉展示的员工列表当中,看不到我新添加的员工。立马自己复现了一下,此时看一下接口返回情况,发现拉起员工列表的页面这个操作,并没有调用接口实时请求数据,也就是说这个地方使用的是缓存。开发给的解释是:出于性能考虑,系统登陆后就缓存了员工这些基本配套信息,不是实时请求。进入设置——应用管理——找到该应用——清除数据,重新登录就看到新员工了。客服欣然接受了这个处理方法。按照这个方法也解决了问题。实际上,这个地方就不能从代码层面上优化了吗?方案肯定是有的:思路一:查询员工列表的地方,接口改成实时调用,...
            1 1 5489
            分享
          • 今天在写脚本的时候发现一个奇怪的错误。经过猜想验证,发现原来Groovy过于灵活了,算是重复踩了之前的坑。Groovy特性描述如下:当Groovy脚本调用getFun()和setFun()方法时,会默认给这个类有一个FunTester的属性。反过来,如果这个类有Fun这个属性,那么get和set方法是不用显式写出来的。本来这是个好事情,一方面其实可以免去多余代码,一方面更容易收拢入口方法(因为直接访问属性、修改属性也是有限调用get和set方法)。但是就是这个特性让我下面的代码报错了。```        StringBuilder sb = new S...
            0 0 934
            分享
          •   继 PlayStation 5 Pro 的传闻之后,微软也加入了这一行列,预告将推出拥有"有史以来最大技术飞跃"的下一代 Xbox。这一令人兴奋的消息是在暗示将推出传统游戏机之外的独特 Xbox 硬件的同时发布的,其中可能包括传闻已久的掌上设备。  在 Xbox 官方播客中,Xbox 总裁莎拉-邦德(Sarah Bond)承诺下一代 Xbox 硬件将有重大进步:  我们还有更多精彩等着你,将在这个假期分享一些令人兴奋的硬件产品,并且还致力于下一代路线图。我们真正关注的是在新一代硬件中实现有史以来最大的技术飞跃,让玩家、创作者和他们正在构建的愿景都能得到更好的体验。  微...
            0 0 594
            分享
      • 51testing软件测试圈微信