Как я могу проверить, запущен ли процесс Unix в Perl?
В UNIX я проверяю, запущен ли процесс, выполнив следующую команду;
Например.
psg dtllst pe99
Это возвращает следующий вывод, если процесс выполняется;
UID PID PPID C STIME TTY TIME CMD
pe99 1234 1 0 03:29:44 pts/8 0:01 dtllst pe99
Теперь в Perl я хочу узнать, запущен ли этот процесс или нет. Пока я делаю следующее
`my $checkProc = `psg dttlst | grep $myNode 2>&1`;` #where $myNode is something like pe01 or pe02 or pe65 or pe99 etc...
Теперь, после этого, я делаю следующее, чтобы увидеть, вернула ли указанная выше команда Perl то, что я ищу, чтобы увидеть, запущен ли процесс;
if ($checkProc =~ m/dtllst $myNode | $myNode/) {
#yes, process is up
} else {
#no, process is down
}
Однако это не работает - в частности, независимо от того, является ли процесс UNIX живым или нет, мой код ВСЕГДА оценивает оператор if как true. Я знаю, что это неправильно. Я попытался экранировать символ "$5$quot; в регулярном выражении, чтобы увидеть, была ли это проблема, и я также попытался удалить переменные Perl из этого регулярного выражения.
Что мне здесь не хватает? Я знаю, что мое регулярное выражение где-то не так :(
Спасибо