Hallo,
ich habe ein Verständnisproblem oder sehe den Wald vor lauter Bäumen nicht mehr.
In einem Skript frage ich per ps nach einem bestimmten Prozess und lasse mir die PID zurückgeben. Hierzu wird ein ps-Kommando zusammen gebaut. Dabei wir unterschieden ob der Prozessname mitgeben wurde und entsprechend behandelt:
elsif ($args{command} eq "Get-Listener-Pid") {
if ($args{listenername} ne "") {
$command= Command->new(command => "ps -ef | grep " . $args{listenername} . " | grep -v grep | awk \'{print \$2}\'", remotecommand => "false");
}
else {
$command= Command->new(command => "ps -ef | grep LISTENER | grep -v grep | awk \'{print \$2}\'", remotecommand => "false");
}
}
Das funktioniert auch soweit, die Ausgabe des Kommandos unmittelbar vor der Ausführung sieht in beiden Varianten so aus:
Ohne Übergabe Prozessname:
Dbg Command [ps -ef | grep LISTENER | grep -v grep | awk '{print $2}']
Ausgeführt:
Mit Übergabe Prozessname:
Dbg Command [ps -ef | grep LISTENER | grep -v grep | awk '{print $2}']
Ausgeführt:
Dbg ReturnMessage [5831
7606
]
Bei der zweiten Variante ist zu sehen, dass zwei Prozess-IDs zurückgeben werden, es läuft aber nur genau ein Prozess. Hat jemand einen Idee?
Diese Verhalten tritt unter den folgenden Perlversionen auf:
AIX 5.3.9.4 TL09
perl -v
This is perl, v5.8.2 built for aix-thread-multi
Linux 2.6.16.60-0.54.5-smp #1 SMP Fri Sep 4 01:28:03 UTC 2009 x86_64 x86_64 x86_64 GNU/Linux
perl -v
This is perl, v5.8.8 built for x86_64-linux-thread-multi
Vielen Dank
Benedikt
Last edited: 2010-06-09 13:10:43 +0200 (CEST)