如何在Linux下优雅的查询日志

做为一名合格的Java后台开发
经常需要查询线上的日志,定位线上问题
所以熟练掌握日志查询的命令
可以使你更加迅速的定位错误日志位置,及时解决问题
在此,我将介绍几个自己工作中经常使用到的日志查询命令
大家一起学习讨论,让我们都能更优雅的操作日志

假设你有一个日志文件demo.log,里面的内容如下所示,
我们将使用这个文件,来演示如何优雅的查询日志文件、定位文件内容。

line1 123456 aa
line2 123456 bb
line3 123456 cc
line4 123456 dd
line5 654321 aa
line6 654321 bb
line7 12
line8 34
line9 56
line0 78

用于输出文件中的尾部内容,实际应用如下:

// 显示文件倒数2行数据,并实时刷新新日志
tail -2f demo.log   

// 执行效果如下:
line9 56
line0 78

// 如果你需要停止,按Ctrl+C退出
// 假如查看的日志,实时刷新的日志量非常多的话,慎用!

命令用于连接文件并打印到标准输出设备上

// 显示文件全部内容
cat demo.log 

// 执行结果:
line1 123456 aa
line2 123456 bb
line3 123456 cc
line4 123456 dd
line5 654321 aa
line6 654321 bb
line7 12
line8 34
line9 56
line0 78

// 由于会显示整个文件的内容,所以如果文件大的话,慎用!

类似cat,不过会以一页一页的形式显示,按空白键space就往下一页显示,按b键就会往回一页显示

more demo.log

// 执行结果(文件内容少的话,会直接显示全部,效果跟cat一样):
line1 123456 aa
line2 123456 bb
line3 123456 cc
--More--(15%)

lessmore类似,但使用less可以随意浏览文件(使用键盘上的上下箭头),而且less在查看之前不会加载整个文件

less demo.log

// 执行结果(文件内容少的话,会直接显示全部,效果如下):
line1 123456 aa
line2 123456 bb
line3 123456 cc
line4 123456 dd
line5 654321 aa
line6 654321 bb
line7 12
line8 34
line9 56
line0 78
demo.log (END)

grep指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,grep指令会把含有范本样式的那一列显示出来

// 查询包含关键字`123456`的日志内容
grep "123456" demo.log

// 执行结果
line1 123456 aa
line2 123456 bb
line3 123456 cc
line4 123456 dd
// 查询包含关键字`123456`且包含`aa`的日志内容
grep "123456" demo.log | grep "aa"

// 执行结果
line1 123456 aa
// 查询不包含`aa`的日志内容
grep -v "aa" demo.log

// 执行结果
line2 123456 bb
line3 123456 cc
line4 123456 dd
line6 654321 bb
line7 12
line8 34
line9 56
line0 78
// 查询包含关键字`123456`但不包含`aa`的日志内容
grep "123456" demo.log | grep -v "aa"

// 执行结果
line2 123456 bb
line3 123456 cc
line4 123456 dd
// 查询包含关键字`123456`或`aa`的日志内容
grep "123456\|aa" demo.log
或者
grep -E "123456|aa" demo.log

// 执行结果
line1 123456 aa
line2 123456 bb
line3 123456 cc
line4 123456 dd
line5 654321 aa
  • 总结

当你通过grep查找关键字,但是还是有非常多匹配的结果时,可以组合前面的lessmore实现分页显示,示例如下:

grep "123456" demo.log | less
grep "123456" demo.log | more

grep "123456\|aa" demo.log | less
grep "123456" demo.log | grep -v "aa" | less

通过以上介绍的几个命令,相信应该足够应付大部分的查找日志的场景。

好了,剩下的就是勤加练习了。

当然,如果你有更好的方式可以更加优雅的查询日志,也希望你能与我一起分享~

原文地址:https://www.cnblogs.com/Trainoo/p/9218830.html

时间: 2024-10-19 17:12:32

如何在Linux下优雅的查询日志的相关文章

如何在Linux下使用Rsync

如何在Linux下使用Rsync 吐槽 昨天对scp进行总结之后看到最后有说到Rsync,俗语有云:好奇心害死猫.抱着学习的态度将Rsync给找了出来,然后进行了一些简单的学习.下面介绍一些个常用的命令.上篇的scp:12个scp传输文件的栗子. 简介 rsync是类unix系统下的数据镜像备份工具——remote sync.一款快速增量备份工具 Remote Sync,远程同步 支持本地复制,或者与其他SSH.rsync主机同步. 对于各种组织和公司,数据对他们是最重要的,即使对于电子商务,数

如何在Linux下使用命令行嗅探HTTP流量

通常我们在调试Web应用.RESTFUL服务或者排错PAC (proxy auto config) 以及检查是否有恶意访问等会去通过错误日志日志或者嗅探数据包的方式去排错:常见的嗅探数据包软件有tcpdump.wireshark;但是针对HTTP需要对数据包进行过滤,显示格式也更不容易读,Httpry工具就能更方便易读的嗅探HTTP流量 安装httpry 基于Debian(Ubuntu or Linux Mint),基础库并没有httpry包,我们用源码来安装 1 2 3 4 5 $ sudo

如何在Linux下禁用IPv6

如何在Linux下禁用IPv6 echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6                            禁用IPv6(包括回环接口) echo 1 > /proc/sys/net/ipv6/conf/default/disable_ipv6                     禁用IPv6(默认) vim /etc/sysctl.conf                                    

linux下的性能查询命令

(1)查看各个CPU核的使用情况 sudo top -d 1 进入之后,按1,会出现下面的CPU使用情况,其中us列反映了各个CPU核的使用情况,百分比大说明该核在进行紧张的任务. (2)查看哪个进程在哪个CPU核上运行 sudo top -d 1 进入之后,依次按f.j和空格,会出现如下(其中P列指示的是该进程最近使用的CPU核,如进程mencoder的P列为7,则表示mencoder最近在核7上运行,对于多线程甚至单线程的进程,在不同时刻会使用不同的CPU Core): (3)vmstat查

如何在Linux下拷贝一个目录呢

cp -af newadmin/movie/.   uploadfile/mallvideo/ 如何在Linux下拷贝一个目录呢?这好像是再简单不过的问题了. 比如要把/home/usera拷贝到/mnt/temp,首先想到的就是 cp -R /home/usera/* /mnt/temp 但是这样有一个问题,/home/usera下的隐藏文件都不会被拷贝,子目录下的隐藏文件倒是会的. 那如何才是正确的方法呢?有人说用-a选项,有人说用find加管道. 其实没这么复杂,Google了之后,学了一

Linux下自动清除MySQL日志文件

MySQL运行过程中会生成大量的日志文件,占用不少空间,修改my.cnf文件配置bin-log过期时间,在Linux下自动清除MySQL日志文件 [mysqld] expire-logs-days=7 max-binlog-size=268435456

Linux下一个简单的日志系统的设计及其C代码实现

1.概述 在大型软件系统中,为了监测软件运行状况及排查软件故障,一般都会要求软件程序在运行的过程中产生日志文件.在日志文件中存放程序流程中的一些重要信息, 包括:变量名称及其值.消息结构定义.函数返回值及其执行情况.脚本执行及调用情况等.通过阅读日志文件,我们能够较快地跟踪程序流程,并发现程序问题. 因此,熟练掌握日志系统的编写方法并快速地阅读日志文件,是对一个软件开发工程师的基本要求. 本文详细地介绍了Linux下一个简单的日志系统的设计方法,并给出了其C代码实现.本文为相关开发项目Linux

Linux教程:如何在Linux下进行C++开发?

Linux是一类Unix计算机操作系统的统称,Linux操作系统的内核的名字也是“Linux”, 在Linux下进行C++开发,需要注意许多问题,比如:减少不必要的编辑动作,减少编辑的时间. Windows下,开发工具多以集成开发环境IDE的形式展现给最终用户.例如,VS2005集成了编辑器,宏汇编ml,C /C++编译器cl,资源编译器rc,调试器,文档生成工具, nmake.它们以集成方式提供给最终用户,对于初学者而言十分方便. 但是,这种商业模式,直接导致用户可定制性差,不利于自动化,集成

Linux下各种后门和日志工具详解

攻入Linux系统后,很多入侵者往往就开始得意忘形了.这其中还有一个原因,就是技术性也要求更高了.下面,我们来看看一些常用的经典工具. 1.从这里延伸:后门和连接工具 (1)Httptunnel Tunnel的意思是隧道,通常HTTPTunnel被称之为HTTP暗道,它的原理就是将数据伪装成HTTP的数据形式来穿过防火墙,实际上,它是在HTTP请求中创建了一个双向的虚拟数据连接来穿透防火墙.说得简单点,就是说在防火墙两边都设立一个转换程序,将原来需要发送或接受的数据包封装成HTTP请求的格式骗过