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在linux系统下获取系统内存使用情况的方法
May 11 Python
Python实现获取域名所用服务器的真实IP
Oct 25 Python
python中numpy.zeros(np.zeros)的使用方法
Nov 07 Python
使用Python实现windows下的抓包与解析
Jan 15 Python
pyqt5的QWebEngineView 使用模板的方法
Aug 18 Python
Python 实现还原已撤回的微信消息
Jun 18 Python
在python Numpy中求向量和矩阵的范数实例
Aug 26 Python
使用Django搭建web服务器的例子(最最正确的方式)
Aug 29 Python
Python3 Click模块的使用方法详解
Feb 12 Python
python3.6环境下安装freetype库和基本使用方法(推荐)
May 10 Python
Numpy中np.random.rand()和np.random.randn() 用法和区别详解
Oct 23 Python
pyx文件 生成pyd 文件用于 cython调用的实现
Mar 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
ninety plus是什么?ninety plus咖啡好吗?
2021/03/04 新手入门
Notice: Undefined index: page in E:\PHP\test.php on line 14
2010/11/02 PHP
php简单构造json多维数组的方法示例
2017/06/08 PHP
PHP一个简单的无需刷新爬虫
2019/01/05 PHP
Javascript匿名函数的一种应用 代码封装
2010/06/27 Javascript
JavaScript中的对象的extensible属性介绍
2014/12/30 Javascript
jQuery中closest()函数用法实例
2015/01/07 Javascript
jQuery插件开发的五种形态小结
2015/03/04 Javascript
怎么通过onclick事件获取js函数返回值(代码少)
2015/07/28 Javascript
Angularjs中UI Router全攻略
2016/01/29 Javascript
JS调用打印机功能简单示例
2016/11/28 Javascript
jQuery插件ajaxFileUpload使用详解
2017/01/10 Javascript
nodejs后台集成ueditor富文本编辑器的实例
2017/07/11 NodeJs
vue2.0+vue-dplayer实现hls播放的示例
2018/03/02 Javascript
Vue实现导出excel表格功能
2018/03/30 Javascript
微信小程序用户授权、位置授权及获取微信绑定手机号
2019/07/18 Javascript
[02:40]DOTA2超级联赛专访430 从小就爱玩对抗性游戏
2013/06/18 DOTA
python中的多线程实例教程
2014/08/27 Python
Python中optparse模块使用浅析
2015/01/01 Python
Python中pow()和math.pow()函数用法示例
2018/02/11 Python
python 字典修改键(key)的几种方法
2018/08/10 Python
python 提取tuple类型值中json格式的key值方法
2018/12/31 Python
python实现函数极小值
2019/07/10 Python
Python动态声明变量赋值代码实例
2019/12/30 Python
Python GUI编程学习笔记之tkinter界面布局显示详解
2020/03/30 Python
python3中for循环踩过的坑记录
2020/12/14 Python
html5弹跳球示例代码
2013/07/23 HTML / CSS
一套中级Java程序员笔试题
2015/01/14 面试题
质检部岗位职责
2013/11/11 职场文书
工程部主管岗位职责
2013/11/17 职场文书
办护照工作证明范本
2014/01/14 职场文书
2014年护理工作总结范文
2014/11/14 职场文书
关于调整工作时间的通知
2015/04/24 职场文书
2015年质检工作总结
2015/05/04 职场文书
火锅店的开业营销方案范本!
2019/07/05 职场文书
go 实现简易端口扫描的示例
2021/05/22 Golang