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实现的监测服务器硬盘使用率脚本分享
Nov 07 Python
如何解决django配置settings时遇到Could not import settings 'conf.local'
Nov 18 Python
在Python中使用PIL模块处理图像的教程
Apr 29 Python
基于Python实现一个简单的银行转账操作
Mar 06 Python
Python冲顶大会 快来答题!
Jan 17 Python
Python使用matplotlib绘制多个图形单独显示的方法示例
Mar 14 Python
python实现list由于numpy array的转换
Apr 04 Python
Python爬虫基础之XPath语法与lxml库的用法详解
Sep 13 Python
python调用opencv实现猫脸检测功能
Jan 15 Python
python selenium登录豆瓣网过程解析
Aug 10 Python
Python解释器及PyCharm工具安装过程
Feb 26 Python
Python爬虫爬取博客实现可视化过程解析
Jun 29 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
超人钢铁侠联手合作?美漫作家呼吁DC漫威合作联动以抵抗疫情
2020/04/09 欧美动漫
PHP中余数、取余的妙用
2015/06/29 PHP
基于php(Thinkphp)+jquery 实现ajax多选反选不选删除数据功能
2017/02/24 PHP
解决Yii2邮件发送结果返回成功,但接收不到邮件的问题
2017/05/23 PHP
在网页中屏蔽快捷键
2006/09/06 Javascript
jQuery 判断元素上是否绑定了事件
2009/10/28 Javascript
JavaScript定义类和对象的方法
2014/11/26 Javascript
JS定义网页表单提交(submit)的方法
2015/03/20 Javascript
JavaScript中实现无缝滚动、分享到侧边栏实例代码
2016/04/06 Javascript
浅谈DOCTYPE对$(window).height()取值的影响
2016/07/21 Javascript
9个让JavaScript调试更简单的Console命令
2016/11/14 Javascript
JavaScript表单验证开发
2016/11/23 Javascript
jQuery中的siblings()是什么意思(推荐)
2016/12/29 Javascript
微信小程序实现运动步数排行功能(可删除)
2018/07/05 Javascript
vue工程全局设置ajax的等待动效的方法
2019/02/22 Javascript
Python字典遍历操作实例小结
2019/03/05 Python
Python、 Pycharm、Django安装详细教程(图文)
2019/04/12 Python
通过python改变图片特定区域的颜色详解
2019/07/15 Python
Python cookie的保存与读取、SSL讲解
2020/02/17 Python
Python操作Jira库常用方法解析
2020/04/10 Python
在Django中自定义filter并在template中的使用详解
2020/05/19 Python
如何使用scrapy中的ItemLoader提取数据
2020/09/30 Python
阿迪达斯比利时官方商城:adidas比利时
2016/10/10 全球购物
Baracuta官方网站:Harrington夹克,G9,G4,G10等
2018/03/06 全球购物
写出SQL四条最基本的数据操作语句(DML)
2012/12/12 面试题
山海经纬软件测试笔试题和面试题
2013/04/02 面试题
教育学专业毕业生的自我评价
2013/11/21 职场文书
物业保安员岗位职责制度
2014/01/30 职场文书
金融管理专业毕业生求职信
2014/03/12 职场文书
家长对孩子的评语
2014/04/18 职场文书
优秀工会工作者事迹材料
2014/06/02 职场文书
消防志愿者活动方案
2014/08/23 职场文书
红色经典电影观后感
2015/06/18 职场文书
MySQL 覆盖索引的优点
2021/05/19 MySQL
springboot集成springCloud中gateway时启动报错的解决
2021/07/16 Java/Android
Spring Cloud OpenFeign模版化客户端
2022/06/25 Java/Android