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 Flask基础教程示例代码
Feb 07 Python
python matplotlib 在指定的两个点之间连线方法
May 25 Python
python多线程并发让两个LED同时亮的方法
Feb 18 Python
python实现字符串加密 生成唯一固定长度字符串
Mar 22 Python
python 整数越界问题详解
Jun 27 Python
python性能测量工具cProfile使用解析
Sep 26 Python
jupyter notebook 参数传递给shell命令行实例
Apr 10 Python
Anaconda+spyder+pycharm的pytorch配置详解(GPU)
Oct 18 Python
Alpine安装Python3依赖出现的问题及解决方法
Dec 25 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
Feb 25 Python
一篇文章弄懂Python中的内建函数
Aug 07 Python
python blinker 信号库
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
基于Zend的Captcha机制的应用
2013/05/02 PHP
处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题
2013/07/03 PHP
php+mysql查询优化简单实例
2015/01/13 PHP
php实现微信企业号支付个人的方法详解
2017/07/26 PHP
PHP fprintf()函数用法讲解
2019/02/16 PHP
js滚动条多种样式,推荐
2007/02/05 Javascript
JQuery扩展插件Validate—6 radio、checkbox、select的验证
2011/09/05 Javascript
Prototype源码浅析 Number部分
2012/01/16 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战二)
2013/08/21 Javascript
jQuery表格排序组件-tablesorter使用示例
2014/05/26 Javascript
JavaScript及jquey实现多个数组的合并操作
2014/09/06 Javascript
jquery复选框多选赋值给文本框的方法
2015/01/27 Javascript
JAVASCRIPT代码编写俄罗斯方块网页版
2015/11/26 Javascript
关于原生js中bind函数的简单实现
2016/08/10 Javascript
Bootstrap的class样式小结
2016/12/01 Javascript
如何利用node.js开发一个生成逐帧动画的小工具
2019/12/01 Javascript
js实现简单选项卡制作
2020/08/05 Javascript
py2exe 编译ico图标的代码
2013/03/08 Python
Python中3种内建数据结构:列表、元组和字典
2014/11/30 Python
Pycharm学习教程(2) 代码风格
2017/05/02 Python
Python使用arrow库优雅地处理时间数据详解
2017/10/10 Python
在PyCharm中批量查找及替换的方法
2019/01/20 Python
Anaconda+Pycharm环境下的PyTorch配置方法
2020/03/13 Python
python实现启动一个外部程序,并且不阻塞当前进程
2020/12/05 Python
使用css3实现的tab选项卡代码分享
2014/12/09 HTML / CSS
中国京东和泰国中央集团合资的网站:JD CENTRAL
2020/08/22 全球购物
机械专业毕业生推荐信范文
2013/11/25 职场文书
学校介绍信范文
2014/01/14 职场文书
俄罗斯商务邀请函
2014/01/26 职场文书
服装店营销方案
2014/03/10 职场文书
一个独生女的故事观后感
2015/06/04 职场文书
班主任工作总结范文
2015/08/13 职场文书
浅谈CSS不规则边框的生成方案
2021/05/25 HTML / CSS
Python并发编程实例教程之线程的玩法
2021/06/20 Python
vue项目支付功能代码详解
2022/02/18 Vue.js
sql查询语句之平均分、最高最低分及排序语句
2022/05/30 MySQL