我尝试在执行一些后台作业时收集所有系统统计数据。例如,我使用以下命令来收集IO统计信息:
iostat -xty 5
此脚本用于每5秒收集I / O统计信息。因此,我的日志将包含许多数据块。这是我得到2个块的示例日志:
Linux 3.10.0-957.21.3.el7.x86_64 (dp-sim-rockdb-1) 07/09/19 _x86_64_ (8 CPU)
07/09/19 17:37:21
avg-cpu: %user %nice %system %iowait %steal %idle
75.97 0.00 21.65 0.00 0.00 2.38
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.00 0.00 1.00 0.00 4.00 8.00 0.00 1.00 0.00 1.00 1.00 0.10
sdb 0.00 7.00 27.00 39.00 108.00 7676.00 235.88 0.47 7.14 2.07 10.64 0.56 3.70
Linux 3.10.0-957.21.3.el7.x86_64 (dp-sim-rockdb-1) 07/09/19 _x86_64_ (8 CPU)
07/09/19 17:37:26
avg-cpu: %user %nice %system %iowait %steal %idle
73.78 0.00 23.97 0.12 0.00 2.12
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.00 11.00 1.00 328.00 4.00 55.33 0.56 50.17 54.64 1.00 8.67 10.40
sdb 0.00 10.00 0.00 42.00 0.00 9920.00 472.38 0.34 8.05 0.00 8.05 0.33 1.40
我经常使用awk解析日志并再次进行重新格式化然后再绘制它们。对于每个块,我想获取DateTime字符串和字段wkB / s,然后合并为一行:
07/09/19 17:37:21,7676.00
07/09/19 17:37:26,9920.00
...
当我使用awk时,困难的事情是:awk命令处理日志的每一行。但是在我的示例中,我需要识别一个障碍。然后在此块中,我需要将多行中的一些数据合并到1行中。
请告诉我一个想法。
答案 0 :(得分:1)
查找每个块中唯一的字符串。
在示例中给出的输出下,以下内容应该起作用:
resolve()