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

Linux 系列从多节点的catalina 日志中统计设备调用频次

Linux 系列从多节点的catalina 日志中统计设备调用频次

在日常后端服务运维、日志排查工作中,我们经常需要从海量日志里提取关键数据,比如统计某接口的设备调用频次。相比于写复杂脚本或借助可视化工具,一条精心组合的 Linux 命令就能快速实现需求。本文就以统计/api/sync接口的设备调用次数为例,拆解一条实用的日志分析命令,让你零基础也能看懂、会用。

一、业务场景与需求

我们的业务场景是:

  • 日志文件:catalina.out.2026-01-01(AGW服务的压缩日志)
  • 目标接口:/api/sync
  • 日志格式:包含deviceCode:设备编号,xxx字段
  • 需求:统计该接口下每个设备的调用总次数,并按次数升序排列

最终使用的完整命令:

grep"/api/sync"$(find./-typef-namecatalina.out.2026-01-01|grepagw)|grep-oP'deviceCode:\K[^,]+'|sort|uniq-c|sort-n

这条命令看似复杂,实则是多个基础命令的组合,下面逐段拆解原理。

二、命令逐段拆解(图文对照)

1. 第一步:定位目标日志文件

find./-typef-namecatalina.out.2026-01-01|grepagw
  • find ./ -type f:在当前目录及子目录查找所有文件
  • -name catalina.out.2026-01-01:精准匹配指定日期的压缩日志
  • |grep agw:过滤出AGW服务对应的日志文件,避免匹配到无关文件

执行效果:快速锁定我们需要分析的日志路径,为后续读取做准备。

2. 第二步:筛选目标接口日志

grep"/api/sync"【上一步找到的日志文件】
  • 读取定位到的压缩日志内容
  • 过滤出仅包含/api/sync接口的日志行,排除其他无关接口日志

执行效果:缩小数据范围,只保留我们关心的接口请求记录。

3. 第三步:精准提取设备编号deviceCode

grep-oP'deviceCode:\K[^,]+'

这是整条命令的核心,用到了 grep 的高级正则能力:

  • -o:只输出匹配到的内容,而非整行
  • -P:启用Perl兼容正则表达式
  • deviceCode:\K[^,]+:匹配deviceCode:后的内容,直到逗号为止,直接提取设备编号

执行效果:剔除无关字段,只保留纯设备编码,无多余字符。

4. 第四步:统计设备调用次数

sort|uniq-c
  • sort:对提取出的设备编号排序,让相同设备编号连续排列
  • uniq -c:统计连续重复的设备编号,输出「次数+设备编号」

执行效果:完成去重与计数,得到每个设备的调用总量。

5. 第五步:按调用次数排序

sort-n
  • -n:按数字大小升序排列,调用次数少的在前,多的在后

执行效果:直观展示设备调用频次分布,快速定位高频/低频设备。

三、完整执行流程与结果示例

把所有命令组合后,终端输出效果如下:

2 device001 5 device003 12 device007 30 device009
  • 第一列:设备调用次数
  • 第二列:对应设备编号

我们可以快速看出:device009调用30次最多,device001仅调用2次,数据一目了然。

四、命令扩展与灵活适配

这条命令可以根据实际场景快速修改,适配更多日志分析需求:

  1. 更换接口:把/api/sync替换为/api/user即可统计用户接口
  2. 更换日期:修改日志文件名中的2026-01-01即可分析其他日期日志
  3. 降序排列:将末尾sort -n改为sort -nr,调用多的设备优先展示
  4. 适配非压缩日志:直接去掉压缩相关逻辑,指定日志路径即可

五、总结

这条 Linux 组合命令,把findgrepsortuniq四个基础工具完美结合,无需编写脚本、无需安装额外工具,就能快速从海量日志中统计设备调用次数,非常适合运维人员、后端开发日常排查问题。

掌握这类命令组合思路,面对日志分析、数据统计类需求时,能大幅提升工作效率,告别手动翻日志的低效方式。

http://www.jsqmd.com/news/578771/

相关文章:

  • Arduino I2C LCD库深度解析:printf支持与HD44780驱动优化
  • RNN,LSTM,BiLSTM算法的具体细节
  • OpenClaw调试技巧:千问3.5-27B任务失败的根本原因分析
  • STM32电位器驱动库:轻量级ADC封装与中值滤波实现
  • 海口上门做饭哪个靠谱
  • 森利威尔SL3073替代RT2862 4-65V超宽压3A降压芯片
  • 基于Matlab的多自由度轴承静刚度计算之旅
  • 【网络安全】入侵检测系统IDS
  • Vodafone K4606 USB调制解调器Linux内核驱动适配
  • 解决网易云音乐NCM格式限制的ncmdump:技术原理与高效解密实践指南
  • LABVIEW写入Excel的函数:应用程序目录、创建路径、写入带分隔符电子表格、for循环、条件结构、按名称解除捆绑、创建数组
  • 企微第三方应用开发避坑指南:从回调服务到内网穿透的实战经验
  • 5分钟用OpenClaw连接SecGPT-14B:网络安全自动化初体验
  • Docker环境下SEEDLab BGP实验全流程避坑指南(附DNS/HTTP超时解决方案)
  • 独立站建站过程中的SEO要点是什么
  • LeetCode知识点总结 - 537
  • OpenClaw技能开发入门:为Phi-3-mini-128k-instruct定制自动化插件
  • 稳健的独热编码
  • 2026 年真正必备的 10 个 Claude 插件(以及它们的作用)
  • SwartNinjaPIR:嵌入式高可靠PIR运动检测驱动库
  • 社交媒体应用的安全策略与用户屏蔽机制
  • 嵌入式开发中的模块化编程与驱动分离实践
  • 【OpenClaw 安全部署与使用指南:从零构建可信赖的 AI 助手】
  • 物流园区灵活用电计量物联网解决方案
  • 跨国系统避坑:IANA 时区与夏令时(DST)完美处理方案
  • LSM303DLH六轴传感器原理与嵌入式驱动开发
  • 茶叶工艺能耗监测系统方案
  • 突破音频限制:OpenCore-Legacy-Patcher焕新老Mac音质体验
  • 1.3 多模态工具扩展:让 Agent 拥有“眼睛“与“双手“
  • 基于胸部正位X光片的两阶段对比学习椎体压缩性骨折筛查框架文献速递-多模态医学影像最新进展