uf123 发表于 2018-8-11 11:56:30

python统计httpd 进程的内存占用百分比

#!/usr/bin/envpython  

  
"""filename: 10_httpd.py"""
  

  
from subprocessimport Popen, PIPE    # 因为要执行linux 的命令,需要使用subprocess 模块
  
importos
  

  
"""定义一个函数,用于获取所有的httpd 的pid号"""
  
defgetPid():
  
    p = Popen(["pidof", "httpd"], stdout=PIPE, stderr=PIPE)
  
    pids = p.stdout.read().split()#通过管道,读出的结果是字符串,然后用split分割,保存在一个list
  
    return pids
  

  

  
"""
  
定义一个函数,统计所有httpd 进程的内存
  
参数:pids 是getPid() 返回的列表
  
"""
  
def parsePidFile(pids):
  
    sum = 0
  
    for i in pids:
  
      fn = os.path.join('/proc', i,'status') #返回status文件的绝对路径
  
      with open(fn) as fd:
  
            for line in fd:
  
                if line.startswith('VmRSS'):   #遍历文件,找到以"VmRSS"开头的行
  
                  mem = int(line.split()) #以空格分割,返回第二部分,内存数
  
                  sum += mem
  
                  break
  
    return sum
  

  

  
"""
  
函数,打开"/proc/meminfo",获取总的内存
  
"""
  
def   total_mem(fn):
  
    with open(fn) as fd:
  
      for line in fd:
  
            if line.startswith("MemTotal"):
  
                total_memory = int(line.split())
  
                return total_memory
  

  

  
if__name__ == "__main__" :
  
    pids = getPid()
  
    sum_mem = parsePidFile(pids)
  
    total_memory = total_mem("/proc/meminfo")
  
    print"Httpd sum memory is: %s KB" % sum_mem
  
    print"Mmeory percent: %.2f%%" % ((sum_mem/float(total_memory))*100)
页: [1]
查看完整版本: python统计httpd 进程的内存占用百分比