本文以实例形式实现了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()
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8