python查看物理内存_使用 python 获取 httpd 程序所占用物理内存

本文档展示了如何使用Python脚本从 '/proc' 目录获取httpd进程的物理内存(VmRSS)信息,并计算其在系统总内存中的百分比。通过 'pidof' 和 'proc' 文件操作,实现对httpd进程内存消耗的实时监控。
摘要由CSDN通过智能技术生成

#!/usr/bin/env python

#encoding: utf-8

'''

思路: /proc/xx_pid/status 文件中的关键字段 VmRSS 来获取某个进程占用的物理内存

步骤: 获取 httpd 进程ID列表 --> 通过每个进程id来获取该进程占用物理内存

'''

from subprocess import Popen, PIPE

import os,sys

# 通过程序名称获取 pid 列表

def getProgPids(prog):

p = Popen(['pidof', prog], stdout=PIPE, stderr=PIPE)

pids = p.stdout.read().split()

return pids

# 通过具体的进程 id 来获取该进程占用的物理内存

def getMemByPid(pid):

fn = os.path.join('/proc', pid, 'status')

with open(fn) as fd:

for line in fd:

if line.startswith('VmRSS'):

mem = int(line.split()[1])

break

return mem

# 获取 httpd 服务所有进程占用的物理内存

def getHttpdMem():

httpd_mem_sum = 0

pids = getProgPids('httpd')

for pid in pids:

httpd_mem_sum += getMemByPid(pid)

return httpd_mem_sum

# 获取系统总的物理内存

def getOsTotalMemory():

with open('/proc/meminfo') as fd:

for line in fd:

if line.startswith('MemTotal'):

total_mem = int(line.split()[1])

break

return total_mem

if __name__ == '__main__':

http_mem = getHttpdMem()

total_mem = getOsTotalMemory()

scale = http_mem / float(total_mem) * 100

print 'Httpd: %d KB' % http_mem

print 'Percent: %.2f%%' % scale

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值