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


Posted in Python onJuly 25, 2014

本文以实例形式实现了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的Flask框架下使用sqlalchemy库的简单教程
Apr 09 Python
Python解析最简单的验证码
Jan 07 Python
实例解析Python的Twisted框架中Deferred对象的用法
May 25 Python
Python 中 Virtualenv 和 pip 的简单用法详解
Aug 18 Python
Python3使用正则表达式爬取内涵段子示例
Apr 22 Python
Python 操作 ElasticSearch的完整代码
Aug 04 Python
Django REST framework 单元测试实例解析
Nov 07 Python
python对Excel的读取的示例代码
Feb 14 Python
keras 读取多标签图像数据方式
Jun 12 Python
Python2.x与3​​.x版本有哪些区别
Jul 09 Python
五分钟带你搞懂python 迭代器与生成器
Aug 30 Python
python 实现体质指数BMI计算
May 26 Python
python的dict,set,list,tuple应用详解
Jul 24 #Python
Python常见数据结构详解
Jul 24 #Python
python海龟绘图实例教程
Jul 24 #Python
python实现绘制树枝简单示例
Jul 24 #Python
python实现进程间通信简单实例
Jul 23 #Python
Python数组条件过滤filter函数使用示例
Jul 22 #Python
Python标准库与第三方库详解
Jul 22 #Python
You might like
PHP中“简单工厂模式”实例代码讲解
2012/09/04 PHP
PHP实现将优酷土豆腾讯视频html地址转换成flash swf地址的方法
2017/08/04 PHP
php实现mysql连接池效果实现代码
2018/01/25 PHP
JavaScript 原型学习总结
2010/10/29 Javascript
javascript 基础篇2 数据类型,语句,函数
2012/03/14 Javascript
javascript 进阶篇1 正则表达式,cookie管理,userData
2012/03/14 Javascript
JS文本框不能输入空格验证方法
2013/03/19 Javascript
javascript获取form里的表单元素的示例代码
2014/02/14 Javascript
javascript事件模型实例分析
2015/01/30 Javascript
12行javascript代码绘制一个八卦图
2015/04/02 Javascript
JS实现的新浪微博大厅文字内容滚动效果代码
2015/11/05 Javascript
jQuery的选择器中的通配符[id^='code']或[name^='code']及jquery选择器总结
2015/12/24 Javascript
Html5 js实现手风琴效果
2020/04/17 Javascript
VUE JS 使用组件实现双向绑定的示例代码
2017/01/10 Javascript
js实现横向拖拽导航条功能
2017/02/17 Javascript
bootstrap table表格使用方法详解
2017/04/26 Javascript
Angular 4依赖注入学习教程之ValueProvider的使用(七)
2017/06/04 Javascript
详解vue父子组件间传值(props)
2017/06/29 Javascript
js纯前端实现腾讯cos文件上传功能的示例代码
2019/05/14 Javascript
Element-ui DatePicker显示周数的方法示例
2019/07/19 Javascript
[04:41]2014DOTA2国际邀请赛 Liquid顺利突围晋级正赛
2014/07/09 DOTA
[01:38]完美世界DOTA2联赛PWL S3 集锦第四期
2020/12/21 DOTA
Python Socket编程详细介绍
2017/03/23 Python
Python实现将Excel转换为json的方法示例
2017/08/05 Python
终端命令查看TensorFlow版本号及路径的方法
2018/06/13 Python
Python requests模块实例用法
2019/02/11 Python
PyQt QCombobox设置行高的方法
2019/06/20 Python
TensorFlow车牌识别完整版代码(含车牌数据集)
2019/08/05 Python
浅谈python锁与死锁问题
2020/08/14 Python
新英格兰最大的特色礼品连锁店:The Paper Store
2018/07/23 全球购物
StudentUniverse英国:学生航班、酒店和旅游
2019/08/25 全球购物
夜班门卫岗位职责
2013/12/09 职场文书
工作个人的自我评价
2014/01/14 职场文书
厨师长岗位职责
2014/03/02 职场文书
医院深入开展党的群众路线教育实践活动实施方案
2014/08/27 职场文书
i5-10400f处理相当于i7多少水平
2022/04/19 数码科技