您的位置:首页 > 编程语言 > Python开发

python--过滤top命令--之--时间_系统CPU_进程CPU_内存

2012-11-21 23:00 561 查看
#!/usr/bin/env python
# -*- coding: cp936 -*-
"""
top -b -n 2 -d 3 > ***.log
-b:bash模式,可以重定向到文件
-n:一共取2次数据
-d:每次top数据间隔为3秒

"""
import os import re import string import argparse #D:/createuser.txt #D:/resultfobj.txt'''analysis createuser.log test''' parser = argparse.ArgumentParser(description='过滤:时间,系统CPU,进程CPU,进程占用内存') parser.add_argument('-l',metavar='LOG FILE',help='日志文件,绝对路径') parser.add_argument('-r',metavar='RESULT FILE',help='保存分析结果,不指定报讯目录,则保存在当前目录下') parser.add_argument('-p',metavar='PROCESS ID',help='过滤线程ID') #parser.print_help() args = parser.parse_args() try: #read the createuser.log file logfobj = open(args.l, 'r') resultfobj = open(args.r, 'w') resultfobj.writelines('TIME sysCPU P_ID processCPU processMEMORY'+'\n') #ID_TOM = '29128' ID_TOM = args.p TIME = 'top' MESSAGE = [] except IOError, e: print 'open file error:\n',e else: print 'start filter' for eachline in logfobj: msysCPU = re.search('^Cpu',eachline) mPID = re.search('^' + ID_TOM,eachline) mTIME = re.search('^' + TIME,eachline) if mTIME is not None: listTIME = re.split('\s+',eachline) #listTIME01 = re.split(':', listTIME[2]) listTIME01 = ''.join(re.split(':', listTIME[2]))#获取时间戳 MESSAGE.append(listTIME01 + ' ') #print 'messageTIME:',MESSAGE if msysCPU is not None: list00 = re.split(':', eachline) #print list00 list01 = re.split(',', list00[1]) #print 'list01:\n',list01 for each in range(0, 6): list0101 = str.strip(list01[each]) #print 'list0101',list0101 us = re.search('us$', list0101) #print us if us is not None: #if each%2 ==0: list010101 = re.split('%',list0101)#获取系统CPU #print 'list010101[0]:',list010101[0] MESSAGE.append(list010101[0] + ' ') MESSAGE.append( ID_TOM+ ' ') #sysCPUfobj.writelines(list010101[0]+'\n') #print 'messagemsysCPU+pid:', MESSAGE if mPID is not None: listPID = re.split('\s+', eachline) #print eachline MESSAGE.append(listPID[8] + ' ') MESSAGE.append(listPID[9]) #print 'MESSAGE process:',MESSAGE if len(MESSAGE)== 5: message = ''.join(MESSAGE) resultfobj.writelines(message + '\n') MESSAGE = [] logfobj.close() resultfobj.close() print 'end filter
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: