Linux日志查询组合拳(cat+grep+sed)

对于一个程序猿而言,如果生产产生Bug,查看日志和错误定位是第一步,假设我们现在有一个叫做catalina.out的日志文件,那么,这几个最基本的命令,我们必须掌握:
tail -f catalina.out 日志跟踪,查看有无交易
tail -fn100 catalina.out 查询日志尾部最后100行的日志
vi catalina.out 打开日志文件
vim catalina.out 打开日志文件
cat catalina.out 文本输出命令

打开日志文件后(基本上也就是vi或者vim命令),我们肯定要查询关键词,只需要记住以下这几个命令,基本也够用了:
G或者shift+g跳转到文件的末尾
?+关键字向查找对应的记录
/+关键字向查找对应的记录
这时,输入 n 命令可以按相同的方向继续查找,输入N 命令可以按相反的方向继续查找。

Vi相关命令,可以参照这篇博客:
https://www.cnblogs.com/0201zcr/p/4781341.html

基本上,掌握这些命令,应对大部分日志查询足以,可是如果日志很大,vi还好,可是cat就应付不过来了,你会感觉到明显的卡顿,ctrl+c退出cat命令都可能要好久,所以,掌握下面这套组合拳,就很有必要了:
cat catalina.out | grep 182001100019

这么一个简单的命令,就能将catalina.out中所有含有182001100019的记录给查出来,关键速度还挺快。当然,只查出这么个东西,大多时候往往还不够,我们还需要知道其前后10行或者20行的东西是什么(记录的日志上下文),所以我们需要把行号打出来,所以在cat命令后面加上一个-n 参数就好了:
cat -n catalina.out | grep 182001100019
在这里插入图片描述
知道行号(我们打印出来的行号是762),我们就可以检索前后20行的东西,比如:
sed -n "742,782p" catalina.out 从742行开始检索,到782行结束
cat -n catalina.out | tail -n +762 | head -n 20 从762行开始检索,往后tail20条

如果cat输出日志太多,我们需要写到txt文本中,我们可以使用more命令来浏览或者输出到文件上再分析:

cat catalina.out | grep 13 |more :将查询后的结果交由more输出
cat catalina.out | grep 13 > /home/tomcat/tomcat7/logs/aa.txt
将查询后的结果写到/home/tomcat/tomcat7/logs/aa.txt文件上

如果想统计catalina.out这个日志一共有多少行,我们可以:
cat catalina.out | wc -l

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值