Найти - Пользователи
Полная версия: отслеживание процессов unix
Начало » Python для новичков » отслеживание процессов unix
1 2 3
larinva
Всем привет! Прошу не пинать, а помочь, в pythone новичок
Пишу скрип который отслеживает работу нужных мне процессов, так вот столкнулся с такой проблемой, а как реализовать с несколькими процессами. С одним делаю так:
#!/usr/bin/env python
import string
import commands, os, string
try:
#
httpd = commands.getoutput("ps ax|grep " + "httpd")
proginfo = string.split(httpd)
httpd = 'httpd'
for i in proginfo:
if httpd in i:
print "Process httpd", i
except:
print "There was a problem with the program."
o7412369815963
вот один из извращенных методов, возвращает ид процессов
>>> p = ['python','bluetooth']
>>> d = commands.getoutput('ps x').splitlines()
>>> [filter(lambda x:i in x,d)[0].split()[0] for i in p]
['2291', '2004']
larinva
))), а если не извращенный? то как. В курсе что есть psutil, пока опыта маловато поэтому не получается
zheromo
>>> import psutil
>>> print psutil.get_pid_list()
[0, 4, 932, 1044, 1072, 1116, 1128, 1280, 1300, 1392, 1492, 1640, 1748, 1844, 19
16, 2004, 508, 704, 736, 740, 776, 872, 1036, 1620, 1656, 1664, 1756, 1852, 2144
, 2160, 2208, 2248, 2276, 2320, 2360, 2388, 2444, 2496, 3844, 2996, 2492, 3196,
328, 1780, 804, 2344, 3404, 2460, 3520, 2348, 3500, 3280, 1536]
>>> for p in psutil.process_iter():
... if p.name == 'httpd.exe':
... print p.get_connections()
...
[connection(fd=-1, family=2, type=1, local_address=('0.0.0.0', 80), remote_addre
ss=(), status='LISTEN')]
[]
larinva
сп-бо! буду разбираться
larinva
Повторяю код zheromo после этого print p.get_connections() тишина OS Freebsd6.2 в tope

47675 www 1 4 0 21488K 13196K accept 0:00 0.00% httpd
40973 www 1 4 0 21484K 13068K accept 0:00 0.00% httpd
41408 www 1 4 0 21484K 13068K accept 0:00 0.00% httpd
41405 www 1 4 0 21484K 13068K accept 0:00 0.00% httpd

здесь if p.name == ‘httpd.exe’: меняю на if p.name == ‘httpd’:
zheromo
Все имена процессов вывести - и посмотреть - у меня (под ubuntu) apache2 он называется
larinva
у меня
Server version: Apache/2.2.17 (FreeBSD)
Server built: Mar 30 2011 13:46:24
ps ax | grep httpd
40972 ?? Ss 0:03.11 /usr/local/sbin/httpd -k start
40973 ?? I 0:00.11 /usr/local/sbin/httpd -k start
40975 ?? I 0:00.08 /usr/local/sbin/httpd -k start
40976 ?? I 0:00.02 /usr/local/sbin/httpd -k start
40977 ?? I 0:00.08 /usr/local/sbin/httpd -k start
41405 ?? I 0:00.10 /usr/local/sbin/httpd -k start
41407 ?? I 0:00.08 /usr/local/sbin/httpd -k start
41408 ?? I 0:00.11 /usr/local/sbin/httpd -k start
47673 ?? I 0:00.08 /usr/local/sbin/httpd -k start
47674 ?? I 0:00.05 /usr/local/sbin/httpd -k start
47675 ?? I 0:00.11 /usr/local/sbin/httpd -k start
zheromo
Что выдает?
>>> import psutil
>>> print set([ p.name for p in psutil.process_iter() ])
larinva
>>> print set([ p.name for p in psutil.process_iter() ])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.5/site-packages/psutil/__init__.py", line 162, in name
name = self._platform_impl.get_process_name()
File "/usr/local/lib/python2.5/site-packages/psutil/_psbsd.py", line 72, in wrapper
raise NoSuchProcess(self.pid, self._process_name)
psutil.error.NoSuchProcess: process no longer exists (pid=90332)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB