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转码问题的解决方法
Oct 07 Python
Python生成pdf文件的方法
Aug 04 Python
一个基于flask的web应用诞生 bootstrap框架美化(3)
Apr 11 Python
python写一个md5解密器示例
Feb 23 Python
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
Apr 18 Python
Python切片操作深入详解
Jul 27 Python
对python numpy.array插入一行或一列的方法详解
Jan 29 Python
django rest framework 实现用户登录认证详解
Jul 29 Python
Python自动化完成tb喵币任务的操作方法
Oct 30 Python
Pandas实现DataFrame按行求百分数(比例数)
Dec 27 Python
Pytorch高阶OP操作where,gather原理
Apr 30 Python
一篇文章搞懂python混乱的切换操作与优雅的推导式
Aug 23 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/01 无线电
功能齐全的PHP发送邮件类代码附详细说明
2008/07/10 PHP
PHP中限制IP段访问、禁止IP提交表单的代码
2011/04/23 PHP
7个鲜为人知却非常实用的PHP函数
2015/07/01 PHP
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
2016/04/17 PHP
php集成动态口令认证
2016/07/21 PHP
PHP文件上传处理案例分析
2016/10/15 PHP
PHP+Apache环境中如何隐藏Apache版本
2017/11/24 PHP
jQuery 使用手册(一)
2009/09/23 Javascript
Dom 是什么的详细说明
2010/10/25 Javascript
ComboBox 和 DateField 在IE下消失的解决方法
2013/08/30 Javascript
jQuery学习笔记之jQuery动画效果
2013/09/09 Javascript
原生js实现tab选项卡切换
2020/03/23 Javascript
AngularJS ng-repeat指令中使用track by子语句解决重复数据遍历错误问题
2017/01/21 Javascript
利用javascript实现的三种图片放大镜效果实例(附源码)
2017/01/23 Javascript
JS利用cookies设置每隔24小时弹出框
2017/04/20 Javascript
解决vue2.x中数据渲染以及vuex缓存的问题
2017/07/13 Javascript
Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件的方法
2017/09/20 Javascript
javascript计算对象长度的方法
2017/10/25 Javascript
浅析Javascript中双等号(==)隐性转换机制
2017/10/27 Javascript
webpack4 SCSS提取和懒加载的示例
2018/09/03 Javascript
Vue 组件修改根实例的数据的方法
2019/04/02 Javascript
vue中注册自定义的全局js方法
2019/11/15 Javascript
[01:59]深扒TI7聊天轮盘语音出处 1
2017/05/11 DOTA
在Python中封装GObject模块进行图形化程序编程的教程
2015/04/14 Python
Python与Java间Socket通信实例代码
2017/03/06 Python
Python连接Redis的基本配置方法
2018/09/13 Python
python GUI库图形界面开发之PyQt5布局控件QHBoxLayout详细使用方法与实例
2020/03/06 Python
Python基于os.environ从windows获取环境变量
2020/06/09 Python
Flesh Beauty官网:露华浓集团旗下彩妆品牌
2021/02/15 全球购物
环境工程大学生个人的自我评价
2013/10/08 职场文书
高校毕业生自我鉴定
2013/10/27 职场文书
2014年小班元旦活动方案
2014/02/16 职场文书
求职信范文大全
2014/05/26 职场文书
安徽导游词
2015/02/12 职场文书
java获取一个文本文件的编码(格式)信息
2022/09/23 Java/Android