码迷,mamicode.com
首页 > 编程语言 > 详细

python查看进程树

时间:2014-09-27 18:03:10      阅读:339      评论:0      收藏:0      [点我收藏+]

标签:python   pstree   

#!/usr/bin/env python
import shlex
from subprocess import Popen,PIPE

def get_ps():
	cmd = ‘ps ax -o pid,ppid,cmd‘
	p = Popen(shlex.split(cmd),stdout=PIPE)
	return p.stdout.readlines()[1:]

def split(s):
	s = s.split()
	return s[0],s[1],‘‘.join(s[2:])

def parser_ps(data):
	procs = []
	for l in data:
		pid,ppid,cmd = [i.strip() for i in split(l)]
		procs.append({‘pid‘:int(pid),‘ppid‘:int(ppid),‘cmd‘:cmd})
	return procs

def show(pid,procs,depth=1):
	root = [p for p in procs if p[‘pid‘] == pid][0]
	print ‘-‘ * depth,root[‘pid‘],root[‘ppid‘],root[‘cmd‘]
	childs = [proc for proc in procs if proc[‘ppid‘] == pid]
	if childs:
		depth += 1
		for c in childs:	
			show(c[‘pid‘],procs,depth)
			
if __name__ == ‘__main__‘:
	data = get_ps()
	procs =  parser_ps(data)
	show(1,procs)


本文出自 “muzinan的技术博客” 博客,谢绝转载!

python查看进程树

标签:python   pstree   

原文地址:http://muzinan110.blog.51cto.com/684213/1558815

(1)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!