Programmatic Parsing of ps

bsergean bsergean at gmail.com
Thu Feb 10 19:26:58 EST 2011


If you're on Linux you should

* Have a look at the /proc/ filesystem, there's probably what you want
there.

Here's a small script that print all the pid/cmd from the process ran
with your user.

#!/usr/local/bin/python

import os
import re
import stat
from os.path import join

for pid in (pid for pid in os.listdir('/proc') if re.match('\d',
pid)):
    cmdline_fn = join('/proc', pid, 'cmdline')
    cmdline = open(cmdline_fn).read()
    uid = os.stat(cmdline_fn)[stat.ST_UID]

    if os.getuid() == uid:
        print pid, cmdline


For a more cross-platform solution there's a module that does that (I
forgot it's name but with some googling you might find it)




On Feb 9, 1:34 pm, Dan Stromberg <drsali... at gmail.com> wrote:
> On Wed, Feb 9, 2011 at 11:15 AM, Emile van Sebille <em... at fenx.com> wrote:
>
> > On 2/9/2011 10:58 AM octopusgrabbus said...
>
> >> I have Python 2.6.6. I would like to get this output
>
> >> ps -ef | grep 'fglgo csm'
>
> >> into a list. What is the best way to do that? I've been reading the
> >> documentation, and am lost.
>
> >> Thank you.
> >> cmn
>
> > commands.getoutput
>
> > Emile
>
> Also, consider using "ps -eo pid,comm" (or similar) instead of ps -ef
> - it should be easier to parse that way.




More information about the Python-list mailing list