当前位置: 首页 > news >正文

服务器查日志太慢,试试grep组合拳

场景一:查异常堆栈,不能只看一行

Java异常堆栈通常都是多行的,仅仅用grep "NullPointerException"只能看到最上面那一行,问题根源在哪根本找不到
这个时候使用grep的-A(After)参数来显示匹配行之后的N行

# 查找NullPointerException,并显示后面的50行
grep -A 50 "java.lang.NullPointerException" a.log

如果发现异常太多,屏幕一闪而过,可以用less加上分页查看:

grep -A 50 "java.lang.NullPointerException" a.log | less

在less视图中,你可以:

1.使用上下箭头或者Page Up/Down键来上下滚动
2.输入G直接翻到末尾,方便快速查看最新的日志
3.输入/Exception继续搜索
4.按q键推出

场景二:实时看新日志怎么打印

如果你的应用正在运行,并且你怀疑它会随时抛出异常,你可以实时监控日志文件的增长。
使用tail -f 结合grep:

# 实时监控a.log文件的新增内容,并只是显示包含“java.lang.NullPointerException”的行及其后的50行
tail -f a.log | grep -A 50 "java.lang.NullPointerException"

只要异常一出现,它就会自动打印出来,堆栈信息也一并送到你面前,想停下来按ctrl+c,想更准确,加-i忽略大小写,防止大小写拼错找不到

场景三:翻历史日志or查看压缩日志

服务器上的日志一般都会按天或按大小分割压缩,变成.log.2025-07-28.gz这种格式,查找这种文件的异常信息怎么办?
1.查找当前目录所有.log文件:

# 在当前目录下查找所有以.log结尾的文件,-H参数可以顺便打印出文件名
grep -H -A 50 "java.lang.NullPointerException" *.log

其中-H会帮你打印出是哪个文件中出现的问题,防止找完还不知道是哪天的事
2.查找.gz文件(压缩日志):

zgrep -H -A 50 "java.lang.NullPointerException" *.gz

zgrep是专门处理.gz的grep,它的功能和grep完全一样,无需手动解压

场景四:统计异常数量(快速判断异常是否频繁)

有时候你需要知道某个异常到底出现了多少次,是偶发还是成灾,使用grep -c:

grep -c "java.lang.NullPointerException" a.log

如果你要统计所有日志里的数量:

grep -c "java.lang.NullPointerException" *.log

其他常用的grep参数

参数作用
-B N匹配行之前的N行(Before)
-A N匹配行之后的N行(After)
-C N匹配上下共N行(Context)
-i忽略大小写
-H显示匹配文件名
-r递归搜索目录下所有文件
http://www.dtcms.com/a/302581.html

相关文章:

  • 利用frp实现内网穿透功能(服务器)Linux、(内网)Windows
  • CentOS7 安装和配置教程
  • RF随机森林分类预测+特征贡献SHAP分析,通过特征贡献分析增强模型透明度,Matlab代码实现,引入SHAP方法打破黑箱限制,提供全局及局部双重解释视角
  • 论文:M矩阵
  • 高可用集群Keepalived、Redis、NoSQL数据库Redis基础管理
  • 常用设计模式系列(十四)—模板方法模式
  • 在 CentOS 上安装 FFmpeg
  • 行业案例:杰和科技为智慧教育构建数字化硬件底座
  • UML类图--基于大话设计模式
  • 【设计模式】状态模式 (状态对象(Objects for States))
  • NBIOT模块 BC28通过MQTT协议连接到电信云
  • Google Chrome V8< 13.7.120 沙箱绕过漏洞
  • 设计模式(二十三)行为型:模板方法模式详解
  • 从 “看天吃饭” 到 “精准可控”:边缘计算网关如何引爆智慧农业种植变革?
  • 新手向:破解VMware迁移难题
  • 解放io_uring编程:liburing实战指南与经典cat示例解析
  • Unity_UI_NGUI_组合控件2
  • Rust实战:AI与机器学习自动炒饭机器学习
  • puppeteer 系列模块的系统性、详细讲解
  • Ubuntu系统完整配置教程
  • InfluxDB 与 HTTP 协议交互进阶(一)
  • 设计模式实战:自定义SpringIOC(理论分析)
  • 无界设计新生态:Penpot开源平台与cpolar的云端协同创新实践
  • 第二十二节 MATLAB转置向量、MATLAB追加向量
  • C++---初始化列表(initializer_list)
  • 基于黑马教程——微服务架构解析(二):雪崩防护+分布式事务
  • 使用 nvm (Node Version Manager) 来管理多个 Node.js 版本,并自由切换
  • OCR 赋能合同抽取:不良资产管理公司的效率加速器
  • 常见的接⼝测试⾯试题
  • 图像识别边缘算法