[Level 2] pstree implementation with Python.
Because I couldn't find pstree command in our company's product.
Therefore, I just search from internet and found someone implement pstree layout with Python.
(http://stackoverflow.com/questions/16395207/create-a-process-tree-like-pstree-command-with-python-in-linux)
And I just modify it and create a pstree.py system utility.
Wish this helps.
regards,
Stanley Huang
#!/bin/env python ''' ## Implement pstree in Python ## data structure of tree, cmd_list tree = { 0: [1], 1: [2, 3], 2: [5, 6, 7, 8], ... } cmd_list = { 0: '/sbin/init', 1: '[kthreadd]', ... } ''' import os import sys import re tree = {} cmd_list = {} def printTree(parent, tree, cmd_list, indent=''): print '%s:%s' % (parent, cmd_list[parent]) if parent not in tree: return for child in tree[parent][:-1]: sys.stdout.write(indent + '|-') printTree(child, tree, cmd_list, indent + '| ') child = tree[parent][-1] sys.stdout.write(indent + '`-') printTree(child, tree, cmd_list, indent + ' ') ## __main__ for l in [ re.sub('[ ]+', ' ', l.lstrip().rstrip()) for l in os.popen('ps -e -o pid,ppid,command --no-heading').readlines() ]: pid = int(l.split(' ')[0]) ppid = int(l.split(' ')[1]) cmd = ' '.join(l.split(' ')[2:]) if ppid not in tree.keys(): tree[ppid] = [] tree[ppid].append(pid) cmd_list[pid] = cmd # print tree # print cmd_list pid = 1 if len(sys.argv) > 1: pid = int(sys.argv[1]) printTree(pid, tree, cmd_list)
Wish this helps.
regards,
Stanley Huang
Comments
Post a Comment