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 datetime时间格式化去掉前导0
Jul 31 Python
python实现定时播放mp3
Mar 29 Python
Python实现统计单词出现的个数
May 28 Python
python3中str(字符串)的使用教程
Mar 23 Python
Python实现按当前日期(年、月、日)创建多级目录的方法
Apr 26 Python
Python装饰器用法实例总结
May 26 Python
Python代码块批量添加Tab缩进的方法
Jun 25 Python
python导包的几种方法(自定义包的生成以及导入详解)
Jul 15 Python
Python模块future用法原理详解
Jan 20 Python
利用 PyCharm 实现本地代码和远端的实时同步功能
Mar 23 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
May 24 Python
Django REST Framework 分页(Pagination)详解
Nov 30 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
简单采集了yahoo的一些数据
2007/02/14 PHP
php模拟post提交数据的方法
2015/02/12 PHP
分享十款最出色的PHP安全开发库中文详细介绍
2015/03/22 PHP
PHP大文件分割上传 PHP分片上传
2017/08/28 PHP
使用PHPStorm+XDebug搭建单步调试环境
2017/11/19 PHP
基于php双引号中访问数组元素报错的解决方法
2018/02/01 PHP
Laravel模糊查询区分大小写的实例
2019/09/29 PHP
laravel 如何实现引入自己的函数或类库
2019/10/15 PHP
24款热门实用的jQuery插件推荐
2014/12/24 Javascript
js中this的用法实例分析
2015/01/10 Javascript
如何编写高质量JS代码(续)
2015/02/25 Javascript
jQuery的end()方法使用详解
2015/07/15 Javascript
AngularJS解决ng界面长表达式(ui-set)的方法分析
2016/11/07 Javascript
js实现移动端编辑添加地址【模仿京东】
2017/04/28 Javascript
使用vue 国际化i18n 实现多实现语言切换功能
2018/10/11 Javascript
vue输入节流,避免实时请求接口的实例代码
2019/10/30 Javascript
微信小程序之导航滑块视图容器功能的实现代码(简单两步)
2020/06/19 Javascript
vue 动态生成拓扑图的示例
2021/01/03 Vue.js
python编程嵌套函数实例代码
2018/02/11 Python
python matlibplot绘制3D图形
2018/07/02 Python
浅谈python下tiff图像的读取和保存方法
2018/12/04 Python
python pprint模块中print()和pprint()两者的区别
2020/02/10 Python
Python 合并拼接字符串的方法
2020/07/28 Python
Python Pandas list列表数据列拆分成多行的方法实现
2020/12/14 Python
HTML5 贪吃蛇游戏实现思路及源代码
2013/09/03 HTML / CSS
html5 利用canvas实现超级玛丽简单动画
2013/09/06 HTML / CSS
Sneaker Studio乌克兰:购买运动鞋
2018/03/26 全球购物
波兰在线杂货店:Polski Koszyk
2019/11/02 全球购物
JYSK加拿大:购买家具、床垫、家居装饰等
2020/02/14 全球购物
新东方旗下远程教育网站:新东方在线
2020/03/19 全球购物
军神教学反思
2014/02/04 职场文书
元旦晚会策划方案
2014/02/18 职场文书
2015年考研复习计划
2015/01/19 职场文书
银行反洗钱宣传活动总结
2015/05/08 职场文书
培训简讯范文
2015/07/20 职场文书
python实现局部图像放大
2021/11/17 Python