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监控网站运行异常并发送邮件的方法
Mar 13 Python
Python网站验证码识别
Jan 25 Python
举例讲解Python中字典的合并值相加与异或对比
Jun 04 Python
python 写入csv乱码问题解决方法
Oct 23 Python
Python Web程序部署到Ubuntu服务器上的方法
Feb 22 Python
对Tensorflow中权值和feature map的可视化详解
Jun 14 Python
Python3.5内置模块之time与datetime模块用法实例分析
Apr 27 Python
详解Python 4.0 预计推出的新功能
Jul 26 Python
pytorch GAN伪造手写体mnist数据集方式
Jan 10 Python
python对象销毁实例(垃圾回收)
Jan 16 Python
python3中calendar返回某一时间点实例讲解
Nov 18 Python
Python机器学习之PCA降维算法详解
May 19 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
mysql_fetch_assoc和mysql_fetch_row的功能加起来就是mysql_fetch_array
2007/01/15 PHP
用php将任何格式视频转为flv的代码
2009/09/03 PHP
php生成略缩图代码
2012/07/16 PHP
php批量删除数据库下指定前缀的表以prefix_为例
2014/08/24 PHP
C# WinForm中实现快捷键自定义设置实例
2015/01/23 PHP
php 算法之实现相对路径的实例
2017/10/17 PHP
yii2安装详细流程
2018/05/23 PHP
测试你的JS的掌握程度的代码
2009/12/09 Javascript
date.parse在IE和FF中的区别
2010/07/29 Javascript
JavaScript中setInterval的用法总结
2013/11/20 Javascript
返回上一页并自动刷新的JavaScript代码
2014/02/19 Javascript
浅谈JavaScript 函数参数传递到底是值传递还是引用传递
2016/08/23 Javascript
Express之get,pos请求参数的获取
2017/05/02 Javascript
用vue写一个仿简书的轮播图的示例代码
2018/03/13 Javascript
Vue中使用webpack别名的方法实例详解
2018/06/19 Javascript
JavaScript实现星级评价效果
2019/05/17 Javascript
vue draggable resizable 实现可拖拽缩放的组件功能
2019/07/15 Javascript
Vue项目中Api的组织和返回数据处理的操作
2019/11/04 Javascript
JS如何操作DOM基于表格动态展示数据
2020/10/15 Javascript
python 文件操作api(文件操作函数)
2016/08/28 Python
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
2019/04/01 Python
python pytest进阶之conftest.py详解
2019/06/27 Python
Python搭建Spark分布式集群环境
2019/07/05 Python
Python数据可视化实现多种图例代码详解
2020/07/14 Python
python开发入门——列表生成式
2020/09/03 Python
python 如何在测试中使用 Mock
2021/03/01 Python
css3的transform造成z-index无效解决方案
2014/12/04 HTML / CSS
英国电子产品购物网站:Tech in the basket
2019/11/08 全球购物
小学教师岗位职责
2013/11/25 职场文书
中英文自我评价常用句型
2013/12/19 职场文书
财务部总监岗位职责
2014/03/12 职场文书
提拔干部考察材料
2014/05/26 职场文书
2014乡镇班子个人对照检查材料思想汇报
2014/09/26 职场文书
机电专业毕业生自我鉴定2014
2014/10/04 职场文书
2014年远程教育工作总结
2014/12/09 职场文书
Python 如何解决稀疏矩阵运算
2021/05/26 Python