Processes in Linux from Python
Wojtek Walczak
gminick at bzt.bzt
Mon Sep 1 06:39:14 EDT 2008
On Sun, 31 Aug 2008 23:25:56 -0700 (PDT), Johny wrote:
> To get a number of the http processes running on my Linux( Debia box)
> I use
> ps -ef | grep "[h]ttpd" | wc -l
...
> So my question is:
> Is it possible to get a number of the http processes running on Linux
> directly from Python ?
Yes, it is. There is a number of third party packages that provide
such functionality, including PSI: http://www.psychofx.com/psi/
I never actually liked them, because they are parsing /proc directory
by themselves. Thus I wrote my own tool that is a wrapper around
procps library (libproc* in your /lib, probably). Your system tools
like ps, w or top are using this library. My wrapping library is
available at: http://code.google.com/p/procpy/
In your case you could use it like this:
>>> import procpy
>>> pp = procpy.Proc()
>>> for pid in pp.pids:
... if pp.procs[pid]['cmd'] == 'apache2':
... print pp.procs[pid]['tid']
...
5204
5205
5206
5208
>>>
it prints the PIDs of all the apache2 processes on my system.
Procpy is fine for my own needs, but if I were about to write
a code that is intended to be portable, I'd use PSI. It also is
more mature.
--
Regards,
Wojtek Walczak,
http://tosh.pl/gminick/
More information about the Python-list
mailing list