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() </pre>