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

Antworten auf die Frage(10)

Ihre Antwort auf die Frage