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发送邮件的实例代码(支持html、图片、附件)
Mar 04 Python
python让图片按照exif信息里的创建时间进行排序的方法
Mar 16 Python
Python计算三维矢量幅度的方法
Jun 15 Python
在 Python 应用中使用 MongoDB的方法
Jan 05 Python
python引入导入自定义模块和外部文件的实例
Jul 24 Python
windows下添加Python环境变量的方法汇总
May 14 Python
python自动发邮件总结及实例说明【推荐】
May 31 Python
python3获取当前目录的实现方法
Jul 29 Python
详解numpy.meshgrid()方法使用
Aug 01 Python
opencv转换颜色空间更改图片背景
Aug 20 Python
python如何将两个txt文件内容合并
Oct 18 Python
利用python实现平稳时间序列的建模方式
Jun 03 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动态图像的创建
2006/10/09 PHP
thinkPHP框架实现的简单计算器示例
2018/12/07 PHP
js将iframe中控件的值传到主页面控件中的实现方法
2013/03/11 Javascript
使用javascript:将其它类型值转换成布尔类型值的解决方法详解
2013/05/07 Javascript
Jquery动态添加输入框的方法
2015/05/29 Javascript
JavaScript实现的MD5算法完整实例
2016/02/02 Javascript
使用jquery提交form表单并自定义action的方法
2016/05/25 Javascript
微信小程序 wxapp导航 navigator详解
2016/10/31 Javascript
js canvas实现QQ拨打电话特效
2017/05/10 Javascript
Vue多种方法实现表头和首列固定的示例代码
2018/02/02 Javascript
关于Angularjs中跨域设置白名单问题
2018/04/17 Javascript
使用Nuxt.js改造已有项目的方法
2018/08/07 Javascript
微信小程序页面间跳转传参方式总结
2019/06/13 Javascript
对layui数据表格动态cols(字段)动态变化详解
2019/10/25 Javascript
js实现飞机大战游戏
2020/08/26 Javascript
Vue如何跨组件传递Slot的实现
2020/12/14 Vue.js
linux系统使用python监测网络接口获取网络的输入输出
2014/01/15 Python
Java Web开发过程中登陆模块的验证码的实现方式总结
2016/05/25 Python
python中字符串类型json操作的注意事项
2017/05/02 Python
python安装numpy&安装matplotlib& scipy的教程
2017/11/02 Python
基于python3 OpenCV3实现静态图片人脸识别
2018/05/25 Python
python3实现域名查询和whois查询功能
2018/06/21 Python
Python寻找两个有序数组的中位数实例详解
2018/12/05 Python
使用pycharm设置控制台不换行的操作方法
2019/01/19 Python
Python学习笔记基本数据结构之序列类型list tuple range用法分析
2019/06/08 Python
Python列表(list)所有元素的同一操作解析
2019/08/01 Python
css3的过滤效果简单实例
2016/08/03 HTML / CSS
澳大利亚个性化儿童礼品网站:Bright Star Kids
2019/06/14 全球购物
Whistles官网:英国女装品牌
2020/08/14 全球购物
导游的职业规划书范文
2013/12/27 职场文书
医院实习介绍信
2014/01/12 职场文书
廉洁使者实施方案
2014/03/29 职场文书
2014大学生职业生涯规划书最新范文
2014/09/13 职场文书
中国文明网向国旗敬礼寄语大全
2014/09/27 职场文书
学雷锋团日活动总结
2015/05/06 职场文书
实例详解Python的进程,线程和协程
2022/03/13 Python