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的struct模块中进行数据格式转换的方法
Jun 17 Python
利用 Monkey 命令操作屏幕快速滑动
Dec 07 Python
python中文分词,使用结巴分词对python进行分词(实例讲解)
Nov 14 Python
Python使用sklearn实现的各种回归算法示例
Jul 04 Python
python selenium 查找隐藏元素 自动播放视频功能
Jul 24 Python
Django文件存储 默认存储系统解析
Aug 02 Python
Python实用库 PrettyTable 学习笔记
Aug 06 Python
python tkinter基本属性详解
Sep 16 Python
python列表推导式操作解析
Nov 26 Python
Python基于requests库爬取网站信息
Mar 02 Python
python3判断IP地址的方法
Mar 04 Python
pytorch 如何使用batch训练lstm网络
May 28 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
东方红 - 来复式再生机的修复
2021/03/02 无线电
用PHP将数据导入到Foxmail的实现代码
2010/09/05 PHP
PHP对文件夹递归执行chmod命令的方法
2015/06/19 PHP
PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例
2016/04/14 PHP
PHP高并发和大流量解决方案整理
2019/12/24 PHP
PHP生成随机密码4种方法及性能对比
2020/12/11 PHP
jQuery筛选器children()案例详解(图文)
2013/02/17 Javascript
使用jQuery解决IE与FireFox下createElement方法的差异
2013/11/14 Javascript
php和js对数据库图片进行等比缩放示例
2014/04/28 Javascript
JS中prototype的用法实例分析
2015/03/19 Javascript
浅谈window对象的scrollBy()方法
2015/07/15 Javascript
jQuery头像裁剪工具jcrop用法实例(附演示与demo源码下载)
2016/01/22 Javascript
Winform客户端向web地址传参接收参数的方法
2016/05/17 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
2016/08/05 Javascript
微信公众平台开发教程(五)详解自定义菜单
2016/12/02 Javascript
基于JavaScript实现购物车功能
2017/02/07 Javascript
Angular2自定义分页组件
2017/04/19 Javascript
AngularJS入门教程一:路由用法初探
2017/05/27 Javascript
微信网页登录逻辑与实现方法
2019/04/29 Javascript
[51:06]DOTA2-DPC中国联赛 正赛 Elephant vs Aster BO3 第二场 1月26日
2021/03/11 DOTA
Python实现抓取城市的PM2.5浓度和排名
2015/03/19 Python
Python实现模拟时钟代码推荐
2015/11/08 Python
在java中如何定义一个抽象属性示例详解
2017/08/18 Python
python批量修改文件编码格式的方法
2018/05/31 Python
python绘制立方体的方法
2018/07/02 Python
在python中pandas的series合并方法
2018/11/12 Python
Python实现Word文档转换Markdown的示例
2020/12/22 Python
使用数据结构给女朋友写个Html5走迷宫游戏
2019/11/26 HTML / CSS
欧洲第一中国智能手机和平板电脑网上商店:CECT-SHOP
2018/01/08 全球购物
下面代码从性能上考虑,有什么问题
2015/04/03 面试题
机电一体化职业规划书
2014/01/07 职场文书
大三学生做职业规划:给未来找个方向
2014/02/24 职场文书
七匹狼男装广告词
2014/03/21 职场文书
联片教研活动总结
2014/07/01 职场文书
小学生迎国庆演讲稿
2014/09/05 职场文书
六一文艺汇演开幕词
2015/01/29 职场文书