1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Tue Jun 10 10:20:13 2014
  4.  
  5. @author: lifeix
  6. """
  7.  
  8. from collections import OrderedDict
  9. import time
  10. import os
  11.  
  12. def cpuinfo():
  13. lines = open('/proc/stat').readlines()
  14. for line in lines:
  15. ln = line.split()
  16. if ln[0].startswith('cpu'):
  17. return ln;
  18. return []
  19. W = cpuinfo()
  20. one_cpuTotal=long(W[1])+long(W[2])+long(W[3])+long(W[4])+long(W[5])+long(W[6])+long(W[7])
  21. one_cpuused=long(W[1])+long(W[2])+long(W[3])
  22.  
  23. def CPUinfo():
  24. ''' Return the information in /proc/CPUinfo
  25. as a dictionary in the following format:
  26. CPU_info['proc0']={...}
  27. CPU_info['proc1']={...}
  28. '''
  29. CPUinfo=OrderedDict()
  30. procinfo=OrderedDict()
  31.  
  32. nprocs = 0
  33. f = open('/proc/cpuinfo')
  34. for line in f.readlines():
  35. if not line.strip():
  36. # end of one processor
  37. CPUinfo['proc%s' % nprocs] = procinfo
  38. nprocs=nprocs+1
  39. # Reset
  40. procinfo=OrderedDict()
  41. else:
  42. if len(line.split(':')) == 2:
  43. procinfo[line.split(':')[0].strip()] = line.split(':')[1].strip()
  44. else:
  45. procinfo[line.split(':')[0].strip()] = ''
  46.  
  47. return CPUinfo
  48.  
  49. def meminfo():
  50. ''' Return the information in /proc/meminfo
  51. as a dictionary '''
  52. meminfo=OrderedDict()
  53.  
  54. f = open('/proc/meminfo')
  55. for line in f.readlines():
  56. meminfo[line.split(':')[0]] = line.split(':')[1].strip()
  57. return meminfo
  58.  
  59. f = open("sysinfo.log",'a')
  60. def logSysInfo(cpu,mem,line):
  61. f.write('\ncpu:%s -------mem: %s------mongocpu:%s'%(cpu,mem,line))
  62. f.flush();
  63.  
  64. def process_info():
  65. #获取drm_processes 的进程号
  66. textlist = os.popen('top -bcn 1 -p 12023').readlines()
  67. line = ''
  68. for t in textlist:
  69. if t.find('12023'):
  70. line = t
  71. line = line.split(' ')
  72. #此处的值依照自己的需求去取
  73. return line[15]
  74. if __name__=='__main__':
  75. CPUinfo = CPUinfo()
  76. for processor in CPUinfo.keys():
  77. print(CPUinfo[processor]['model name'])
  78. f.write("cpu:%s"%CPUinfo[processor]['model name'])
  79. #meminfo = meminfo()
  80. #print('Total memory: {0}'.format(meminfo['MemTotal']))
  81.  
  82. try:
  83. while True:
  84. line = process_info()
  85. time.sleep(2)
  86. mi = meminfo()
  87. print('Free memory: {0}'.format(mi['MemFree']))
  88. W = cpuinfo()
  89. two_cpuTotal=long(W[1])+long(W[2])+long(W[3])+long(W[4])+long(W[5])+long(W[6])+long(W[7])
  90. two_cpuused=long(W[1])+long(W[2])+long(W[3])
  91. cpuused=float(two_cpuused-one_cpuused)/(two_cpuTotal-one_cpuTotal)
  92. print ('%.2f%%'%(cpuused*100))
  93. print line
  94. cpu = '%.2f%%'%(cpuused*100)
  95. logSysInfo(cpu,format(mi['MemFree']),line)
  96. except KeyboardInterrupt, e:
  97. print ("\ncpumonit exited")
  98. f.close()
  99. f.close()

python监控linux性能以及进程消耗的性能的更多相关文章

  1. python实现Linux启动守护进程

    python实现Linux启动守护进程 DaemonClass.py代码: #/usr/bin/env python # -*- coding: utf-8 -*- import sys import ...

  2. 第6章:使用Python监控Linux系统

    1.Python编写的监控工具 1).多功能系统资源统计工具dstat dstat是一个用Python编写的多功能系统资源统计工具,用来取代Linux下的vmstat,iostat,netstat和i ...

  3. 使用Python监控Linux系统

    一.Python编写的监控工具 一.多功能系统资源统计工具dstat 1.dstat介绍 dstat是一个用Python语言实现的多功能系统资源统计工具,用来取代Linux下的vmstat.iosta ...

  4. NetHogs监控Linux的每个进程流量

    在日常运维环境中,我们肯定会遇到以下这种需求: 1.网络流量异常,不知道是哪个程序的流量爆涨? 2.日常需要监控网络实时的流量进去数据 面试装逼系列|这篇文章,让运维监控不再成为你的短板! 学会这 1 ...

  5. linux ps 按进程消耗内存资源大小排序

    linux ps 关于sort的解释 --sort spec specify sorting order. Sorting syntax is [+|-]key[,[+|-]key[,...]] Ch ...

  6. python监控linux内存并写入mongodb

    (需要安装psutil 用来获取服务器资源,以及pymongo驱动)#pip install psutil #pip install pymongo #vim memory_monitory.py 文 ...

  7. Linux 不同方法查看进程消耗CPU IO 等

    1.用top命令指定固定的PID top -p 10997 查询指定进程的PID ps -ef | grep zookeeper jim 10997 1959 0 12月14 pts/2 00:00: ...

  8. 用python监控Linux,CPU,内存,硬盘

    #!/usr/local/bin/python3.5 #coding:utf-8 import mailll, linecache, re, socket, os, time hostname = s ...

  9. linux 创建守护进程的相关知识

    linux 创建守护进程的相关知识 http://www.114390.com/article/46410.htm linux 创建守护进程的相关知识,这篇文章主要介绍了linux 创建守护进程的相关 ...

随机推荐

  1. 请用Java设计一个Least Recently Used (LRU) 缓存

    LRU介绍:LRU是Least Recently Used的缩写,即最少使用页面置换算法,是为虚拟页式存储管理服务的, 思路介绍: 能够使用两个标准的数据结构来实现.Map和Queue.由于须要支持多 ...

  2. [IOS]mac以太网连接

    今天玩了一下苹果一体机.感觉还是蛮不错的,只是.就是用以太网连接的时候遇到了一点问题.用这篇文章记录一下: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/ ...

  3. Project Euler:Problem 37 Truncatable primes

    The number 3797 has an interesting property. Being prime itself, it is possible to continuously remo ...

  4. web后台知识点整理

    五.JEE 适用于创建server端的大型的软件服务系统 1. JEE : JAVA  PLATFORM  ENTERPRISE  DEDITON 2.是一个规范集.技术集.框架集(API集) 一种技 ...

  5. [SCOI 2007] 排列

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1072 [算法] 状压DP [代码] #include<bits/stdc++. ...

  6. golang sftp传输文件

    之前有一篇介绍如何使用 golang 通过SSH协议来执行远程命令:golang执行远程命令 同样,通过SSH协议也可以使用 golang 来远程传输文件. 除了 SSH 的库,为了传输文件,还需要用 ...

  7. POJ 2446 匈牙利算法

    题意: 思路: 二分图匹配... // by SiriusRen #include <cmath> #include <cstdio> #include <cstring ...

  8. ubuntu下安装VMware

    1 用apt-get命令更新系统 loginname@localhost:~$ sudo apt-get update 2 从官方网站下载Workstation11(Bundle Script) lo ...

  9. Spring《六》管理Bean

    BeanWrapper BeanFactory ApplicationContext 1.通常情况下使用BeanFactory.ApplicationContext 2.ApplicationCont ...

  10. 微信小程序分享朋友圈的实现思路与解决办法

    实现思路 那么既然小程序没有分享到朋友圈的api,我们怎么实现分享到朋友圈呢,下面我介绍一下实现思路. 既然没有捷径,那就走复杂一点的路线,那就是需要用户手动分享到朋友圈,问题又来了,用户手动分享的话 ...