LINUX.ORG.RU

На что ругается pgrep?

 pgrep, ,


1

2

Делаю скрипт для проверки на состояние процессов по списку.
Так как процессов много, решил распараллелить проверку посредством Popen, но сразу встал в тупик

% cat test.py
from subprocess import Popen
result = Popen(['pgrep','-f','test'], shell = True)

% python test.py
pgrep: не указаны критерии соответствия
Наберите `pgrep --help' для дополнительной информации

% pgrep -f test
966
1495


За что он так со мной и как его дебажить?

★★★★★

достаточно:

result = Popen(['pgrep','-f','test'])

anonymous
()
Ответ на: комментарий от true_admin

мм...а как при этом вытащить код возврата самого pgrep (вывод пидов мне не нужен)?

In [1]: import os
In [2]: from subprocess import Popen
In [3]: result = Popen(['pgrep','-f','test'],stdout=open(os.devnull, 'wb'))
In [4]: result.returncode
In [5]:

zolden ★★★★★
() автор топика
Ответ на: комментарий от true_admin

в силу некоторых ньюансов использование нестандартных модулей нежелательно, железок несколько, в интернет ходить не могут

zolden ★★★★★
() автор топика
Ответ на: комментарий от anonymous

предлагаете репать вывод ps или /proc?

zolden ★★★★★
() автор топика
Ответ на: комментарий от true_admin

2.6, но судя по https://docs.python.org/2/library/subprocess.html в 2м вообще такого нет

Идея с разбором выводом ps мне нравится всё больше и больше, смысла плодить pgrepы наверно не очень много для такой простой задачи

zolden ★★★★★
() автор топика
Ответ на: комментарий от zolden

в общем сделал без распареллеливания и без re

tasklist = ['task 1', 'task 2', 'task n']
processes = subprocess.Popen(["ps","нужные","опции"], stdout = subprocess.PIPE)
out, err = processes.comminucate()

for task in tasklist:
    if task in out:
        print "Running"
    else:
        print "Stopped"

zolden ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.