相关知识点:
1、 /proc/$pid/下 smaps、status文件获取swap值,和pid对应的进程名
2、python的字符串判断,分片
3、python的异常处理,有的进程不是常驻,执行过程中已经退出,pid目录找不到
4、python正则
-
#!/usr/bin/env python
-
import re,os
-
#Swap: 0 kB
-
def check_swap(pid):
-
try:
-
f_name='/proc/'+pid+'/smaps'
-
f = open(f_name)
-
lines=f.readlines()
-
f.close()
-
size = 0
-
pattern=r'Swap:\s+(\d+)\s+KB'
-
for line in lines:
-
if re.compile(pattern).findall(line):
-
size += int(re.compile(pattern).findall(line)[0])
-
return pid,size
-
except:
-
#print "Erro"
-
pass
-
def get_name(pid):
-
try:
-
f_name='/proc/'+pid+'/status'
-
f = open(f_name)
-
line=f.readline()
-
f.close()
-
name = line.split(':')[-1].split()[0]
-
return name
-
except:
-
pass
-
if __name__=='__main__':
-
print 'PID\tSWAP-SIZE\tNAME'
-
print os.getpid()
-
print '----------------'
-
for pid in os.listdir('/proc'):
-
if pid.isdigit():
-
info = check_swap(pid)
-
if info :#and info[-1]:
-
print "%s\t%s\t%s" % (info[0],info[1],get_name(pid))
阅读(1768) | 评论(0) | 转发(0) |