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 相关文章推荐
json跨域调用python的方法详解
Jan 11 Python
python版简单工厂模式
Oct 16 Python
Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
Jan 11 Python
tensorflow构建BP神经网络的方法
Mar 12 Python
python pandas中对Series数据进行轴向连接的实例
Jun 08 Python
pyqt5的QWebEngineView 使用模板的方法
Aug 18 Python
利用Python正则表达式过滤敏感词的方法
Jan 21 Python
详解Python基础random模块随机数的生成
Mar 23 Python
Python 离线工作环境搭建的方法步骤
Jul 29 Python
PYTHON绘制雷达图代码实例
Oct 15 Python
python 实现return返回多个值
Nov 19 Python
使用Pytorch搭建模型的步骤
Nov 16 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乱码问题,UTF-8乱码常见问题小结
2012/04/09 PHP
php递归使用示例(php递归函数)
2014/02/14 PHP
PHP5.3新特性小结
2016/02/14 PHP
PHP实现获取并生成数据库字典的方法
2016/05/04 PHP
[原创]php常用字符串输出方法分析(echo,print,printf及sprintf)
2016/07/09 PHP
PHP上传Excel文件导入数据到MySQL数据库示例
2016/10/25 PHP
PHP模版引擎原理、定义与用法实例
2019/03/29 PHP
StringTemplate遇见jQuery冲突的解决方法
2011/09/22 Javascript
JavaScript中数组对象的那些自带方法介绍
2013/03/12 Javascript
ie7+背景透明文字不透明超级简单的实现方法
2014/01/17 Javascript
使用原生js封装webapp滑动效果(惯性滑动、滑动回弹)
2014/05/06 Javascript
nodejs分页类代码分享
2014/06/17 NodeJs
Ionic默认的Tabs模板使用实例
2016/08/29 Javascript
jQuery实现遮罩层登录对话框
2016/12/29 Javascript
JS实现的二叉树算法完整实例
2017/04/06 Javascript
js数字滑动时钟的简单实现(示例讲解)
2017/08/14 Javascript
React Native悬浮按钮组件的示例代码
2018/04/05 Javascript
vue实现路由懒加载及组件懒加载的方式
2019/06/11 Javascript
SSM+layUI 根据登录信息显示不同的页面方法
2019/09/20 Javascript
微信小程序之左右布局的实现代码
2019/12/13 Javascript
借助云开发实现小程序短信验证码的发送
2020/01/06 Javascript
Vue中keep-alive 实现后退不刷新并保持滚动位置
2020/03/17 Javascript
多种类型jQuery网页验证码插件代码实例
2021/01/09 jQuery
Python实现的购物车功能示例
2018/02/11 Python
Python时间差中seconds和total_seconds的区别详解
2019/12/26 Python
简单了解Django ORM常用字段类型及参数配置
2020/01/07 Python
python中的socket实现ftp客户端和服务器收发文件及md5加密文件
2020/04/01 Python
如何提高python 中for循环的效率
2020/04/15 Python
Farfetch巴西官网:奢侈品牌时尚购物平台
2020/10/19 全球购物
工作人员思想汇报
2014/01/09 职场文书
学校安全教育月活动总结
2014/07/07 职场文书
乡镇群众路线专项整治方案
2014/11/03 职场文书
小学家长意见怎么写
2015/06/03 职场文书
十个Python自动化常用操作,即拿即用
2021/05/10 Python
SQL Server一个字符串拆分多行显示或者多行数据合并成一个字符串
2022/05/25 SQL Server
MySQL的表级锁,行级锁,排它锁和共享锁
2022/07/15 MySQL