红联Linux门户
Linux帮助

Python & Ubuntu获取进程信息

发布时间:2016-04-06 15:25:02来源:linux网站作者:jerrylsxu

备忘,其实是想知道该进程使用的内存状况。


首先要获取系统的内存信息:

def memory_stat():
'''
return the memory info
'''
mem = {}
stat = {}
f = open('/proc/meminfo')
lines = f.readlines()
for line in lines:
if len(line) < 2 : continue
name = line.split(':')[0]
var  = line.split(':')[1].split()[0]
mem[name] = long(var) * 1024.0
stat['MemUsed'] = mem['MemTotal'] - mem['MemFree'] - mem['Buffers'] - mem['Cached']
stat['MemTotal'] = mem['MemTotal']
stat['MemFree'] = mem['MemFree']
stat['Buffers'] = mem['Buffers']
stat['Cached'] = mem['Cached']
return stat


因为我下面使用的方法来获取的进程信息,只能知道该进程占内存的百分比。所以必须先获取内存的总量。


接下来定义一个获取进程信息的函数。

def proc_stat(procid):
import commands
ps_stat = None
try:
#获取进程的内存信息
ps_stat = commands.getoutput('ps -fp %s -u' % procid).split('\n')[2].split()
except:
return {}

procInfo = {}

procInfo['PID'] = procid

#这里调用了刚才定义的 memory_stat 获取内存总量,
#然后乘以该进程所占内存的百分比,即为内存使用量
procInfo['MemoryUsed'] = memory_stat()['MemTotal'] * float(ps_stat[3]) / 100

procInfo['Start'] = ps_stat[8]
procInfo['StartCommand'] = ps_stat[10]

return procInfo


接着使用 ipython ,测试 ,先开一个 python 进程 ,假设进程ID为2168,则:

from MachineInfo import proc_stat

ps = proc_stat(2168)

ps

{'MemoryUsed': 3650289.6639999999, #这里是以 byte 为单位,也可以自己进行转换
 'PID': 2168,
 'Start': '21:56',
 'StartCommand': 'python'}


记录完毕。


本文永久更新地址:http://www.linuxdiyf.com/linux/19559.html