如何高效的抓取进行日志截取

发布于 2021-11-19 04:44:46 字数 548 浏览 940 评论 9

情景大概是这样子的,在一台主机上有文件abc_01_20130517.log , abc_02_20130517.log , abc_03_20130517.log类似格式的多个日志文件。现在需要根据其他部门提供的流水号tranid进行日志检索。以前的处理方法:将tranid一行一个写入文件tranid.list里面,然后在脚本里面遍历流水,用脚本:

#其中$li指流水
find . -name "*0517*" | xargs grep -an "$li"| tee -a chaoshi.baowen.log
来进行处理,但是比较慢。情景:

#文件大小(500M)
#文件个数(5个)
#流水(200个)

除了跑的慢外,就是top可以看到比较占用内存,怕影响生产性能。
请有经验的前辈指导下,谢谢。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

冷清清 2021-11-21 08:00:14

我看看,一直java开发...

时光清浅 2021-11-21 08:00:13

现在不就是一行行的处理么?不明白你的意思。求解释〜~

草莓味的萝莉 2021-11-21 08:00:13

写程序吧,用mmap

囚你心 2021-11-21 07:57:18

回复
你现在是把所有的文件拼在一起grep 内存显然占用更多啊,不过你的需求不是很明确啊,到底你是要更少的内存占用还是要更快的处理速度啊~

带上头具痛哭 2021-11-21 07:41:04

回复
你的意思是find . -name *0517*是把文件给拼接在一起然后再grep了么?先求速度。。

哑剧 2021-11-21 07:10:55

按行逐一遍历各个文件吧,内存占用会少一点~

终陌 2021-11-21 05:31:49

怎么讲?用awk取行然后做匹配么?效率怎么样呢?

怎言笑 2021-11-21 04:28:37

@gKiwi >=python的效率

彩扇题诗 2021-11-19 10:21:22

awk处理应该不错

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文