nmon文件过大进行分割

问题

nmon的文件如果过大,解析工具进行解析的时候就会产生问题,那么提前对文件进行拆分以后,就可以方便的使用了

分割就是对着文件,指定分割的次数,就可以分割成多个文件,然后因为需要处理表头,进行统一的处理即可

处理脚本

#! /usr/bin/python
# -*- coding:utf-8-*-

import sys

filename=sys.argv[1]
fileprefix=sys.argv[1].split(".")[0]
split_num=int(sys.argv[2])

line_list={}
import os
os.system('mkdir output')

#定义list的数据编号
T_NUM=1
# 通过文件获取所有的开始行
# 并获取最后的行号
with open('%s.nmon' %(fileprefix),'r') as f:
    for (num,value) in enumerate(f,start=1):
        if "ZZZZ" in value:
            line_list[T_NUM]={}
            line_list[T_NUM]["start_num"]=num
            T_NUM = T_NUM + 1
        last_num=num

# end是取下一个减一如果最后一个就是最后一行的行号
for item in line_list:
    if item < len(line_list):
        itemend=item+1
        end_num=line_list[itemend]["start_num"]-1
        line_list[item]["end_num"]=end_num
    else:
        line_list[item]["end_num"]=last_num



base_end=line_list[1]["start_num"]-1
os.system('sed -n \'1,%sp\'  %s.nmon > output/%s-base.nmon' %(base_end,fileprefix,fileprefix))

#分的次数
line_long=len(line_list)/split_num
line_end_yu=len(line_list)%split_num
for i in range(0,split_num):
    start=i*line_long+1
    if i == (split_num-1):
        end=i*line_long+line_long+line_end_yu
    else:
        end=i*line_long+line_long
    start=line_list[start]["start_num"]
    end=line_list[end]["end_num"]
    os.system('cp -ra output/%s-base.nmon  output/%s-split-%s.nmon' %(fileprefix,fileprefix,i))
    os.system('sed -n \'%s,%sp\'  %s.nmon >>   output/%s-split-%s.nmon' %(start,end,fileprefix,fileprefix,i))

使用方法(2,3都行)

python3 split.py swarmbee_210612_1518.nmon 2

后面接文件名称,然后接分割的次数,比如24小时想分成12小时一个文件,就分成两个即可

工具下载

http://nmon.sourceforge.net/pmwiki.php?n=Site.Nmon-Analyser

https://sourceforge.net/projects/nmon/files/nmon_analyser_v66.zip

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

武汉磨磨

打赏是写出更好教程的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值