Hi!
Нужно проверять есть ли определенный процесс от определенного пользователя. Это делается из перл-скрипта, но при таком выражении
$ps_stroke_in=qx!ps -U $user_name -o pid,command | grep $name_programm!;
выдаются еще и строки с вызовом шелла для данной команды. Вопрос -
как в этой же строке сказать grep что-бы он не только показывал строки
с данным именем процесса, но и исключал(не отображал) строки например с символами "sh" "/bin/sh" итд?
Пробовал комбинации ключей -e -v - не получается :( Может через маску? Ведь будет строка только из номера процесса и его имени (которое нам известно).
Это конечно я еще буду пробовать, но может кто-то раньше подскажет решение :)Удачи!
HAN
>Нужно проверять есть ли определенный процесс от определенного пользователя. Это делается из
> перл-скрипта, но при таком выражении
>$ps_stroke_in=qx!ps -U $user_name -o pid,command | grep $name_programm!;"|grep -v grep" Но зачем использовать grep при запуске из перл ? Используй средства perl'а, функцию grep() :-)
>"sh" "/bin/sh" итд?
grep -v "sh"
PS. Не буду советовать использовать модуль Proc::ProcessTable, во первых тормозит раз в 10 больше голого "ps -auxwww", во вторых более-менее полная инофрмация доступна только под Linux (там и по /proc самостоятольно полазить можно).
Hi!
Да это я понял что -v работает на исключение, но мне нужно оба варианта сразу - и "ловить" по строке и отсеивать уже из этого по другой строке.
Т.е. получается что в одной строке должны быть два правила (маски) - для включения и исключения. Вот у меня пока не удается их совместить (а может они вообще работают эти ключи друг за другом и перекрывают предыдущие).Вобщем вопрос пока открытый - как совместить включающие и исключающие patterns в строке grep?
Удачи!
HAN.
Hi!
Вобщем задачу я решил просто указав более конкретную маску -
$ps_stroke=qx!ps -U $user_name -o pid,command | grep -e "[0-9] $name_programm"!;Но если кто еще что скажет по взаимодействию включающих/исключающих масок - прочту с большим интересом! :)
Удачи!
HAN