Wie kann ich überprüfen, ob in Perl ein Unix-Prozess ausgeführt wird?
nter UNIX überprüfe ich, ob ein Prozess aktiv ist, indem ich den folgenden Befehl ausführe:
Z.B
psg dtllst pe99
Dies gibt die folgende Ausgabe zurück, wenn der Prozess ausgeführt wird:
UID PID PPID C STIME TTY TIME CMD
pe99 1234 1 0 03:29:44 pts/8 0:01 dtllst pe99
Now in Perl möchte ich in der Lage sein, herauszufinden, ob dieser Prozess abgeschlossen ist oder nicht. Bisher mache ich folgendes
`my $checkProc = `psg dttlst | grep $myNode 2>&1`;` #where $myNode is something like pe01 or pe02 or pe65 or pe99 etc...
Nun danach gehe ich wie folgt vor, um festzustellen, ob der obige Perl-Befehl das zurückgegeben hat, wonach ich suche, um festzustellen, ob der Prozess aktiv ist;
if ($checkProc =~ m/dtllst $myNode | $myNode/) {
#yes, process is up
} else {
#no, process is down
}
Dies funktioniert jedoch nicht - unabhängig davon, ob der UNIX-Prozess aktiv ist oder nicht, wertet mein Code die if-Anweisung IMMER als true aus. Ich weiß, dass das falsch ist. Ich habe versucht, das Zeichen "!$5$!quot; im regulären Ausdruck zu umgehen, um festzustellen, ob dies das Problem ist, und ich habe auch versucht, die Perl-Variablen insgesamt aus dem regulären Ausdruck zu entfernen.
Was fehle ich hier? Ich weiß, dass mein regulärer Ausdruck irgendwo falsch ist:
Vielen Dan