python实现监控linux性能及进程消耗性能的方法
admin
2023-07-31 02:09:40
0

本文以实例形式实现了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()

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
项目管理和工程管理的区别 项目管理 项目管理,顾名思义就是专注于开发和完成项目的管理,以实现目标并满足成功标准和项目要求。 工...