Найти - Пользователи
Полная версия: отслеживание процессов unix
Начало » Python для новичков » отслеживание процессов unix
1 2 3
larinva
может кто подскажет чтобы это значило?
Андрей Светлов
Процессы могут завершаться — ничего более.
larinva
а что нужно тогда сделать чтобы получить результат как у zheromo
zheromo
Обрабатывайте исключение
import psutil
for p in psutil.process_iter():
try:
print p.name,
except psutil.error.NoSuchProcess:
pass
larinva
Сп-бо!!! всем
larinva
Всем привет! подскажите, что не так. В первом коде все нормально, если процессы такие есть то выводятся
import psutil
p = psutil.get_process_list()

for i in p:
try:
if 'chrome.exe' in i.name:
print 'Google Chrome' + i.name
if 'iexplore.exe' in i.name:
print 'InternenExploror' + i.name
if 'thunderbird.exe' in i.name:
print 'Mozilla Mail' + i.name
except:
pass
результат
>>>
Google Chromechrome.exe
Google Chromechrome.exe
Google Chromechrome.exe
Google Chromechrome.exe
Google Chromechrome.exe
Mozilla Mailthunderbird.exe
Google Chromechrome.exe
InternenExplororiexplore.exe
Google Chromechrome.exe
InternenExplororiexplore.exe
InternenExplororiexplore.exe
InternenExplororiexplore.exe
Google Chromechrome.exe
Google Chromechrome.exe
Google Chromechrome.exe
>>>

как только добавляю в этот код else:
import psutil
p = psutil.get_process_list()

for i in p:
try:
if 'chrome.exe' in i.name:
print 'Google Chrome' + i.name
if 'iexplore.exe' in i.name:
print 'InternenExploror' + i.name
if 'thunderbird.exe' in i.name:
print 'Mozilla Mail' + i.name
[b] if 'hjhdjasy' in i.name:
print 'Mozilla Mail' + i.name
else:
print 'Процесс не запущен' [/b]
except:
pass
Выводится такая бяка

Процесс не запущен
Процесс не запущен
InternenExplororiexplore.exe
Процесс не запущен
InternenExplororiexplore.exe
Процесс не запущен
InternenExplororiexplore.exe
Процесс не запущен
Google Chromechrome.exe
Процесс не запущен
Процесс не запущен
Процесс не запущен
Google Chromechrome.exe
Процесс не запущен
Google Chromechrome.exe
Процесс не запущен
pyuser
larinva
подскажите, что не так
мягко выражаясь - ВСЕ не так :(
Вы пробегаете по списку процессов и в имени очередного процесса пытаетесь найти имя из заданного списка процессов…. :(
Ваш else работает только для последнего if….
Создайте список имен и уже в нем ищите…
names = set(x.name for x in psutil.get_process_list())
process = ['chrome.exe', 'iexplore.exe', 'thunderbird.exe', 'hjhdjasy']
for p in process:
print(p, 'не' if p not in names else "", 'запущен')
larinva
понимаю что тупые вопросы, но пока только так, сп-бо pyuser
larinva
за отредактированный вариант БОЛЬШОЕ СП-БО :yes3
larinva
в FreeBsd 6.2 python2.6.6 в этом коде
names = set(x.name for x in psutil.get_process_list())
process = ['httpd', 'squid', 'sshd', 'hjhdjasy']
for p in process:
print(p, 'не' if p not in names else "", 'запущен')
вываливает вот это

Traceback (most recent call last):
File “./_proc.py”, line 24, in <module>
names = set(x.name for x in psutil.get_process_list())
File “./_proc.py”, line 24, in <genexpr>
names = set(x.name for x in psutil.get_process_list())
File “/usr/local/lib/python2.6/site-packages/psutil/__init__.py”, line 162, in name
name = self._platform_impl.get_process_name()
File “/usr/local/lib/python2.6/site-packages/psutil/_psbsd.py”, line 72, in wrapper
raise NoSuchProcess(self.pid, self._process_name)
psutil.error.NoSuchProcess: process no longer exists (pid=36940)

чтобы это значило?
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