爱奥娱乐
您的当前位置:首页python实现监控linux性能及进程消耗性能的方法

python实现监控linux性能及进程消耗性能的方法

来源:爱奥娱乐


本文以实例形式实现了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('
cpu:%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 ("
cpumonit exited")
 f.close()
f.close()
显示全文