Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 6, 2011 11:42:17

larinva
От:
Зарегистрирован: 2011-04-05
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

отслеживание процессов unix

может кто подскажет чтобы это значило?



Офлайн

#2 Апрель 6, 2011 11:51:16

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

отслеживание процессов unix

Процессы могут завершаться — ничего более.



Офлайн

#3 Апрель 6, 2011 12:14:45

larinva
От:
Зарегистрирован: 2011-04-05
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

отслеживание процессов unix

а что нужно тогда сделать чтобы получить результат как у zheromo



Офлайн

#4 Апрель 6, 2011 16:48:16

zheromo
От:
Зарегистрирован: 2010-10-02
Сообщения: 356
Репутация: +  2  -
Профиль   Отправить e-mail  

отслеживание процессов unix

Обрабатывайте исключение

import psutil
for p in psutil.process_iter():
try:
print p.name,
except psutil.error.NoSuchProcess:
pass



Офлайн

#5 Апрель 8, 2011 08:34:06

larinva
От:
Зарегистрирован: 2011-04-05
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

отслеживание процессов unix

Сп-бо!!! всем



Офлайн

#6 Апрель 13, 2011 15:56:23

larinva
От:
Зарегистрирован: 2011-04-05
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

отслеживание процессов unix

Всем привет! подскажите, что не так. В первом коде все нормально, если процессы такие есть то выводятся

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
Процесс не запущен



Офлайн

#7 Апрель 13, 2011 16:15:34

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

отслеживание процессов unix

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 "", 'запущен')



Отредактировано (Апрель 13, 2011 16:27:55)

Офлайн

#8 Апрель 13, 2011 16:20:43

larinva
От:
Зарегистрирован: 2011-04-05
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

отслеживание процессов unix

понимаю что тупые вопросы, но пока только так, сп-бо pyuser



Офлайн

#9 Апрель 13, 2011 16:57:43

larinva
От:
Зарегистрирован: 2011-04-05
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

отслеживание процессов unix

за отредактированный вариант БОЛЬШОЕ СП-БО :yes3



Офлайн

#10 Апрель 14, 2011 12:35:51

larinva
От:
Зарегистрирован: 2011-04-05
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

отслеживание процессов unix

в 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)

чтобы это значило?



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version