Thread Seltsames Verhalten bei Variablenersetzung (6 answers)
Opened by BenediktS at 2010-06-09 13:09

Gast BenediktS
 2010-06-09 13:09
#138139 #138139
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:


Code: (dl )
1
2
3
4
5
6
7
8
        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:
Code: (dl )
Dbg Command [ps -ef | grep LISTENER | grep -v grep | awk '{print $2}']


Ausgeführt:
Code: (dl )
1
2
Dbg ReturnMessage [7606
]


Mit Übergabe Prozessname:
Code: (dl )
Dbg Command [ps -ef | grep LISTENER | grep -v grep | awk '{print $2}']


Ausgeführt:
Code: (dl )
1
2
3
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
Code: (dl )
1
2
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
Code: (dl )
1
2
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)

View full thread Seltsames Verhalten bei Variablenersetzung