服务器日志定位 sed + 重定向 + grep + less 命令组合

最近新功能提测上线,配合测试每天从早到晚的定位各种问题。

因为项目特殊,虽然测试点数量庞大,但是所有的问题定位的方式基本都大同小异。

测试不能及时提出问题,提测文档也总是晚一天或者几天发出来,所以定位起来也非常麻烦,加上项目的日志打印非常混乱,所以研究了一下快速定位的方式。


  1. sed命令

sed是linux中提供的一个外部命令,它是一个行(流)编辑器,所以要注意一个问题,我们是在日志中通常是根据测试提供的日期时间进行定位。所以开始、结束时间必须是日志中存在的时间,如果不存在则查询不到。

sed -n  '/2023-01-31 14:16:*/,/2023-01-31 14:17:*/p' DEBUG.log.2023-01-31

而根据业务,我实际是根据一分钟内的时间定位即可,配合正则表达式,所以实际使用到的命令是

sed -n  '/2023-01-31 14:16:*/p' DEBUG.log.2023-01-31
  1. >重定向命令

结合上面的sed命令,需要输出到一个单独文件中更好的进行定位,所以使用了>进行输出重定向到指定的日志文件中。

sed -n  '/2023-01-31 14:16:*/p' DEBUG.log.2023-01-31 > ./log/outlog1.log
  1. grep命令

截取出来的日志内容有DEBUG,INFO级别等等,还是不够清晰。所以使用grep进行过滤,直接定位类名更加清晰。

grep -rni "BOPJudge" ./log/outlog1.log > ./log/outlog2.log
  1. less

最后查看截取出来,并且过滤好后的日志。这里没用cat view more vim...等等,而是使用了less,都说是linux正统查看文件内容的工具,功能极其强大,亲测也是如此,有很多文本编辑命令没有的功能。强烈推荐

less功能的参数很多,也很灵活,会单开一篇文章进行整理。

less -m -N ./log/outlog2.log
  1. 最终组合

上面的几个命令都为了方便起见,可以使用 ; 将命令行的命令组合在一起。更加便捷,拆解分析一下。

sed -n  '/2023-01-31 14:16:*/p' DEBUG.log.2023-01-31 
> ./log/outlog1.log ; 
grep -rni "BOPJudge" ./log/outlog1.log 
> ./log/outlog2.log ;
less -m -N ./log/outlog2.log

先使用sed截取指定日期时间,重定向到指定文件留存一份过程日志。

再使用grep进行关键词过滤,重定向结果到指定文件再留存一份日志。

最后使用less查看最终的日志。


最终命令就是如下这么长一串了。

sed -n  '/2023-01-31 14:16:*/p' DEBUG.log.2023-01-31 > ./log/outlog1.log ; grep -rni "BOPJudge" ./log/outlog1.log > ./log/outlog2.log ; less -m -N ./log/outlog2.log

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值