В UNIX я проверяю, запущен ли процесс, выполнив следующую команду:
* 1003 Е.Г. *
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. Я знаю, что это неправильно.
Я попытался экранировать символ "$" в регулярном выражении, чтобы убедиться, что это проблема, и я также попытался удалить переменные Perl из регулярного выражения.
Что мне здесь не хватает? Я знаю, что мое регулярное выражение где-то не так: (
Спасибо