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 合并文件的具体实例
Aug 08 Python
python使用win32com在百度空间插入html元素示例
Feb 20 Python
python发送HTTP请求的方法小结
Jul 08 Python
详解Python中映射类型的内建函数和工厂函数
Aug 19 Python
django开发之settings.py中变量的全局引用详解
Mar 29 Python
python中实现精确的浮点数运算详解
Nov 02 Python
python读取txt文件,去掉空格计算每行长度的方法
Dec 20 Python
Python数据可视化库seaborn的使用总结
Jan 15 Python
Python使用百度api做人脸对比的方法
Aug 28 Python
解决Django连接db遇到的问题
Aug 29 Python
Python版中国省市经纬度
Feb 11 Python
Python日期格式和字符串格式相互转换的方法
Feb 18 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的性能
2013/10/30 PHP
php导入模块文件分享
2015/03/17 PHP
基于PHP实现栈数据结构和括号匹配算法示例
2017/08/10 PHP
js将iframe中控件的值传到主页面控件中的实现方法
2013/03/11 Javascript
JavaScript—window对象使用示例
2013/12/09 Javascript
jQuery修改CSS伪元素属性的方法
2014/07/30 Javascript
javascript实现日期时间动态显示示例代码
2015/09/08 Javascript
JavaScript:Date类型全面解析
2016/05/19 Javascript
JS中showModalDialog关闭子窗口刷新主窗口用法详解
2017/03/25 Javascript
JavaScript模拟文件拖选框样式v1.0的实例
2017/08/04 Javascript
Vue-cli3.x + axios 跨域方案踩坑指北
2019/07/04 Javascript
es6 super关键字的理解与应用实例分析
2020/02/15 Javascript
vue任意关系组件通信与跨组件监听状态vue-communication
2020/10/18 Javascript
antd design table更改某行数据的样式操作
2020/10/31 Javascript
vue element el-transfer增加拖拽功能
2021/01/15 Vue.js
探究数组排序提升Python程序的循环的运行效率的原因
2015/04/01 Python
Python中如何获取类属性的列表
2016/12/26 Python
Python中%r和%s的详解及区别
2017/03/16 Python
python正则表达式的使用
2017/06/12 Python
用Python编写一个高效的端口扫描器的方法
2018/12/20 Python
解决Python plt.savefig 保存图片时一片空白的问题
2019/01/10 Python
Python时间序列处理之ARIMA模型的使用讲解
2019/04/02 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
2019/10/24 Python
python 命名规范知识点汇总
2020/02/14 Python
HTML5离线应用与客户端存储的实现
2018/05/03 HTML / CSS
Agoda香港:全球特价酒店预订
2017/05/07 全球购物
新闻网站实习自我鉴定
2013/09/25 职场文书
网上商城创业计划书范文
2014/01/31 职场文书
机关出纳岗位职责
2014/04/03 职场文书
领导党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
2014年企业团支部工作总结
2014/12/10 职场文书
关于上班时间调整的通知
2015/04/23 职场文书
网吧温馨提示
2015/07/17 职场文书
经典格言警句:没有热忱,世间便无进步
2019/11/13 职场文书
python之np.argmax()及对axis=0或者1的理解
2021/06/02 Python
Python基础教程,Python入门教程(超详细)
2021/06/24 Python