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 21 Python
python处理图片之PIL模块简单使用方法
May 11 Python
详解python时间模块中的datetime模块
Jan 13 Python
python类中super()和__init__()的区别
Oct 18 Python
Python SQLite3数据库日期与时间常见函数用法分析
Aug 14 Python
numpy 进行数组拼接,分别在行和列上合并的实例
May 08 Python
python3结合openpyxl库实现excel操作的实例代码
Sep 11 Python
python可视化爬虫界面之天气查询
Jul 03 Python
Python3 翻转二叉树的实现
Sep 30 Python
基于python实现删除指定文件类型
Jul 21 Python
Python切片列表字符串如何实现切换
Aug 06 Python
python实现简单的学生管理系统
Feb 22 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/05/14 PHP
php使用curl检测网页是否被百度收录的示例分享
2014/01/31 PHP
PHP 文件上传限制问题
2019/09/01 PHP
漂亮的仿flash菜单,来自蓝色经典
2006/06/26 Javascript
<script defer> defer 是什么意思
2009/05/10 Javascript
让图片旋转任意角度及JQuery插件使用介绍
2013/03/20 Javascript
jQuery实现的原图对比窗帘效果
2014/06/15 Javascript
JS面向对象编程详解
2016/03/06 Javascript
javascript实现简易计算器的代码
2016/05/31 Javascript
DOM事件探秘篇
2017/02/15 Javascript
详解React中的组件通信问题
2017/07/31 Javascript
Javascript中toFixed计算错误(依赖银行家舍入法的缺陷)解决方法
2017/08/22 Javascript
JS实现websocket长轮询实时消息提示的效果
2017/10/10 Javascript
详解vue中v-on事件监听指令的基本用法
2020/07/22 Javascript
Python编写屏幕截图程序方法
2015/02/18 Python
Python标准库06之子进程 (subprocess包) 详解
2016/12/07 Python
解决python 输出是省略号的问题
2018/04/19 Python
python计算阶乘和的方法(1!+2!+3!+...+n!)
2019/02/01 Python
python+selenium 鼠标事件操作方法
2019/08/24 Python
html5 自定义播放器核心代码
2013/12/20 HTML / CSS
加热夹克:RAVEAN
2018/10/19 全球购物
意大利在线药房:Farmacia Loreto Gallo
2019/08/09 全球购物
创建文明学校实施方案
2014/03/11 职场文书
《欢乐的泼水节》教学反思
2014/04/22 职场文书
航空学院求职信
2014/06/11 职场文书
大学运动会加油稿200字(5篇)
2014/09/27 职场文书
幼儿园教学工作总结2015
2015/05/12 职场文书
趣味运动会赞词
2015/07/22 职场文书
小学大队委竞选口号
2015/12/25 职场文书
学习心理学心得体会
2016/01/22 职场文书
七年级英语教学反思
2016/02/15 职场文书
Django 如何实现文件上传下载
2021/04/08 Python
深入理解mysql事务隔离级别和存储引擎
2022/04/12 MySQL
解决vue-router的beforeRouteUpdate不能触发
2022/04/14 Vue.js
HTML5之高度塌陷问题的解决
2022/06/01 HTML / CSS
Mysql如何查看是否使用到索引
2022/12/24 MySQL