加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
    • 使用systrace为什么会用到这个命令?
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

Linux split 命令在这种情况下很有用

2023/08/05
2963
阅读需 5 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

哈喽,大家好,我是小G。

大家有没有碰到过这种情况? 经常为了复现某个偶现问题,在开始测试时就需要打开日志一直跟踪日志到问题复现,在这个过程中,可能会经历很长时间,导致抓取到的日志文件一般都比较大,导致在分析日志时分析日志的工具load日志很慢,可能还会占用内存过多,导致办公系统运行变慢、变得比较卡顿。

如果碰到这种情况一般有两种处理方法:

1、优化log系统,针对保存日志的文件大小设置一个固定的size,每当日志保存超过这个size之后,就重新保存日志到另外一个文件,以此类推,最后分析问题的时候面对就是一个个固定size大小的日志文件,避免出现较大size的日志文件导致load慢或卡顿的问题。

2、依然采用持续性记录日志,全部保存在一个文件内,但分析问题前,根据日志大小,时间情况等,对日志文件大小进行手动分割处理。

当然对于log分析而言,第一种方法显然会更友好,避免了人为手动参与,会更高效。实际中我们可能两种方法会混合使用,提高效率。

今天主要学习的是第二种方法中涉及到的一个 Linux 命令 : split 。另外也是因为最近经常在使用systrace的场景用到比较多,所以记录一下,详细如下。

使用systrace为什么会用到这个命令?

有时为了分析难复现或者复杂的问题,需要抓取尽可能多的事件的 systrace,而最后抓取到的这些 systrace 的总大小可能很大,而我本地电脑在本地一直持续在用,可能半个月都没关机过了,内存已经吃紧,浏览器本身内存也可能吃紧了,此时如果碰到一个systrace文件太大就会出现无法 load 解析了,所以就需要考虑将抓取到的 systrace 文件进行分割,分段进行解析。

此时 Linux split 这个命令就非常有用了。

split 命令可以将一个文件分割成数个。该指令将大文件分割成较小的文件,在默认情况下将按照每1000行切割成一个小文件。通过命令参数,可以指定按照行数或者字节数进行分割。

用法:

split [--help][--version][-<行数>][-b <字节>][-C <字节>][-l <行数>][要切割的文件][输出文件名]

部分说明:

-l <行数> : 指定每多少行切成一个小文件

-b <字节> : 指定每多少字节切成一个小文件

-C<字节> : 与参数“-b”相似,但是在切 割时将尽量维持每行的完整性

[输出文件名] : 设置切割后文件的前置文件名, split会自动在前置文件名后再加上编号

比如,我想以每 10 行分割文件 testfile:

$ split -l 10 testfile

再如,过大的 systrace 文件,以每 500000 行进行分割:

split -l 500000 mytest.html

说明:

1、一般 systrace 文件,差不多每行大约 100Bytes 上下;

2、注意:切割systrace时候,需要主要针对切割之后文件,还需要做下处理,避免出现异常,导致无法解析。

由于 systrace 文件之前是完整的 html 语法规则编写,分割之后意味着每个分割的小文件的末尾,语法则会出现不匹配情况,此时就需要我们进行手动消除,可在切割后的systrace文件末尾添加如下内容:

</script>
<!-- END TRACE -->
</body>
</html>

然后,就可以和平时使用一样,分段解析每一个小的systrace文件了。

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
CPC1510GSTR 1 IXYS Corporation Transistor Output SSR, 1-Channel, 3750V Isolation, SURFACE MOUNT PACKAGE-6
$2.3 查看

相关推荐

电子产业图谱

记录和分享C/C++、Linux、ARM、Android、IoT相关知识。技术相伴于生活和成长,愿你我永为少年,心中有火,眼中有光,始保热情。