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正则表达式匹配ip地址实例
Oct 09 Python
Python中的getopt函数使用详解
Jul 28 Python
Linux上安装Python的PIL和Pillow库处理图片的实例教程
Jun 23 Python
Python实现对象转换为xml的方法示例
Jun 08 Python
Python3之读取连接过的网络并定位的方法
Apr 22 Python
Python3.4学习笔记之列表、数组操作示例
Mar 01 Python
Python解决pip install时出现的Could not fetch URL问题
Aug 01 Python
python主要用于哪些方向
Jul 05 Python
Python 创建守护进程的示例
Sep 29 Python
Python基础之常用库常用方法整理
Apr 30 Python
python三子棋游戏
May 04 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实现curl模拟ftp上传的方法
2015/07/29 PHP
详解WordPress开发中过滤属性以及Sql语句的函数使用
2015/12/25 PHP
javascript 强制刷新页面的实现代码
2009/12/13 Javascript
JavaScript浏览器选项卡效果
2010/08/25 Javascript
JavaScript游戏之优化篇
2010/11/08 Javascript
JavaScript获取某年某月的最后一天附截图
2014/06/23 Javascript
jQuery事件用法实例汇总
2014/08/29 Javascript
PHP配置文件php.ini中打开错误报告的设置方法
2015/01/09 PHP
javascript实现数独解法
2015/03/14 Javascript
JavaScript使用concat连接数组的方法
2015/04/06 Javascript
Node.js+Express配置入门教程详解
2016/05/19 Javascript
数据结构中的各种排序方法小结(JS实现)
2016/07/23 Javascript
Input文本框随着输入内容多少自动延伸的实现
2017/02/15 Javascript
Node实战之不同环境下配置文件使用教程
2018/01/02 Javascript
JavaScript EventEmitter 背后的秘密 完整版
2018/03/29 Javascript
vue.js中toast用法及使用toast弹框的实例代码
2018/08/27 Javascript
vue项目中锚点定位替代方式
2019/11/13 Javascript
用pickle存储Python的原生对象方法
2017/04/28 Python
快速了解Python相对导入
2018/01/12 Python
利用python如何处理百万条数据(适用java新手)
2018/06/06 Python
详解Django-restframework 之频率源码分析
2019/02/27 Python
Django框架首页和登录页分离操作示例
2019/05/28 Python
Python数据存储之 h5py详解
2019/12/26 Python
Python中内建模块collections如何使用
2020/05/27 Python
Python中用xlwt制作表格实例讲解
2020/11/05 Python
html5指南-6.如何创建离线web应用程序实现离线访问
2013/01/07 HTML / CSS
索尼巴西商店:Sony巴西
2019/06/21 全球购物
妇科医生自荐信
2013/11/05 职场文书
酒店总经理助理岗位职责
2014/02/01 职场文书
《这儿真好》教学反思
2014/02/22 职场文书
实习单位评语
2014/04/26 职场文书
环保小标语
2014/06/13 职场文书
销售业务员岗位职责
2015/02/13 职场文书
关于环保的广播稿
2015/12/17 职场文书
Pytest中skip skipif跳过用例详解
2021/06/30 Python
Mysql8.0递归查询的简单用法示例
2021/08/04 MySQL