本文以实例形式实现了python监控linux性能以及进程消耗性能的方法,具体实现代码如下:
# -*- coding: utf-8 -*- \"\"\" Created on Tue Jun 10 10:20:13 2014 @author: lifeix \"\"\" from collections import OrderedDict import time import os def cpuinfo(): lines = open(\'/proc/stat\').readlines() for line in lines: ln = line.split() if ln[0].startswith(\'cpu\'): return ln; return [] W = cpuinfo() one_cpuTotal=long(W[1])+long(W[2])+long(W[3])+long(W[4])+long(W[5])+long(W[6])+long(W[7]) one_cpuused=long(W[1])+long(W[2])+long(W[3]) def CPUinfo(): \'\'\' Return the information in /proc/CPUinfo as a dictionary in the following format: CPU_info[\'proc0\']={...} CPU_info[\'proc1\']={...} \'\'\' CPUinfo=OrderedDict() procinfo=OrderedDict() nprocs = 0 f = open(\'/proc/cpuinfo\') for line in f.readlines(): if not line.strip(): # end of one processor CPUinfo[\'proc%s\' % nprocs] = procinfo nprocs=nprocs+1 # Reset procinfo=OrderedDict() else: if len(line.split(\':\')) == 2: procinfo[line.split(\':\')[0].strip()] = line.split(\':\')[1].strip() else: procinfo[line.split(\':\')[0].strip()] = \'\' return CPUinfo def meminfo(): \'\'\' Return the information in /proc/meminfo as a dictionary \'\'\' meminfo=OrderedDict() f = open(\'/proc/meminfo\') for line in f.readlines(): meminfo[line.split(\':\')[0]] = line.split(\':\')[1].strip() return meminfo f = open(\"sysinfo.log\",\'a\') def logSysInfo(cpu,mem,line): f.write(\'\\ncpu:%s -------mem: %s------mongocpu:%s\'%(cpu,mem,line)) f.flush(); def process_info(): #获取drm_processes 的进程号 textlist = os.popen(\'top -bcn 1 -p 12023\').readlines() line = \'\' for t in textlist: if t.find(\'12023\'): line = t line = line.split(\' \') #此处的值按照自己的需求去取 return line[15] if __name__==\'__main__\': CPUinfo = CPUinfo() for processor in CPUinfo.keys(): print(CPUinfo[processor][\'model name\']) f.write(\"cpu:%s\"%CPUinfo[processor][\'model name\']) #meminfo = meminfo() #print(\'Total memory: {0}\'.format(meminfo[\'MemTotal\'])) try: while True: line = process_info() time.sleep(2) mi = meminfo() print(\'Free memory: {0}\'.format(mi[\'MemFree\'])) W = cpuinfo() two_cpuTotal=long(W[1])+long(W[2])+long(W[3])+long(W[4])+long(W[5])+long(W[6])+long(W[7]) two_cpuused=long(W[1])+long(W[2])+long(W[3]) cpuused=float(two_cpuused-one_cpuused)/(two_cpuTotal-one_cpuTotal) print (\'%.2f%%\'%(cpuused*100)) print line cpu = \'%.2f%%\'%(cpuused*100) logSysInfo(cpu,format(mi[\'MemFree\']),line) except KeyboardInterrupt, e: print (\"\\ncpumonit exited\") f.close() f.close()
上一篇:Python实现类继承实例
下一篇:Python常见数据结构详解