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 相关文章推荐
通过C++学习Python
Jan 20 Python
Django中几种重定向方法
Apr 28 Python
浅谈Python中的数据类型
May 05 Python
Python简单的制作图片验证码实例
May 31 Python
Python实现计算字符串中出现次数最多的字符示例
Jan 21 Python
解决Python3 控制台输出InsecureRequestWarning问题
Jul 15 Python
python实现简单井字棋游戏
Mar 04 Python
python实现拼接图片
Mar 23 Python
如何理解python面向对象编程
Jun 01 Python
Matplotlib自定义坐标轴刻度的实现示例
Jun 18 Python
python 利用zmail库发送邮件
Sep 11 Python
Python用access判断文件是否被占用的实例方法
Dec 17 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 文件状态缓存带来的问题
2008/12/14 PHP
PHP处理postfix邮件内容的方法
2015/06/16 PHP
php批量删除操作(数据访问)
2017/05/23 PHP
jQuery一步一步实现跨浏览器的可编辑表格,支持IE、Firefox、Safari、Chrome、Opera
2009/08/28 Javascript
JavaScript 全角转半角部分
2009/10/28 Javascript
Js 代码中,ajax请求地址后加随机数防止浏览器缓存的原因
2013/05/07 Javascript
jQuery中mouseover事件用法实例
2014/12/26 Javascript
js中unicode转码方法详解
2015/10/09 Javascript
轻松学习jQuery插件EasyUI EasyUI实现树形网络基本操作(2)
2015/11/30 Javascript
AngularJS基础 ng-srcset 指令简单示例
2016/08/03 Javascript
jQuery实现表格文本框淡入更改值后淡出效果
2016/09/27 Javascript
js中DOM三级列表(代码分享)
2017/03/20 Javascript
解析NodeJS异步I/O的实现
2017/04/13 NodeJs
详解Windows下安装Nodejs步骤
2017/05/18 NodeJs
基于es6三点运算符的使用方法(实例讲解)
2017/10/12 Javascript
JS实现网页抢购功能(触发,终止脚本)
2017/11/27 Javascript
Vue实现跑马灯效果
2020/05/25 Javascript
ant design vue导航菜单与路由配置操作
2020/10/28 Javascript
python字符串连接的N种方式总结
2014/09/17 Python
Django查找网站项目根目录和对正则表达式的支持
2015/07/15 Python
Pyinstaller将py打包成exe的实例
2018/03/31 Python
Pipenv一键搭建python虚拟环境的方法
2018/05/22 Python
修复 Django migration 时遇到的问题解决
2018/06/14 Python
详解Numpy中的广播原则/机制
2018/09/20 Python
Python中遍历列表的方法总结
2019/06/27 Python
应届护士推荐信
2013/11/16 职场文书
财务部出纳岗位职责
2013/12/22 职场文书
写求职信有什么意义
2014/02/17 职场文书
公路绿化方案
2014/05/12 职场文书
2014年教师党员公开承诺书
2014/05/28 职场文书
小学生勤俭节约演讲稿
2014/08/28 职场文书
财务个人年度总结范文
2015/02/26 职场文书
2015年医生个人工作总结
2015/04/25 职场文书
预防艾滋病宣传活动总结
2015/05/09 职场文书
解决tk mapper 通用mapper的bug问题
2021/06/16 Java/Android
一小时迅速入门Mybatis之bind与多数据源支持 Java API
2021/09/15 Javascript