On Don, 12 Jul 2001, Bernhard Walle wrote:
Na ganz einfach wie in der Shell mit Backticks:
$PID = `ps ax | grep 'smbd' | head -n 1 | cut -c-6`
Korrekt. Aber Gegenvorschlag: ==== beisskante ==== #!/usr/local/bin/perl -w use strict; my @pids; my @ps = `ps ax`; ## Elementtrenner == '\n' == Zeilenumbruch foreach (@ps) { if(/^ *([0-9]+) .*smbd/) { ## die regex liesse sich noch verfeinern push(@pids, $1); } } foreach $pid (@pids) { ## Hier kann man jetzt sonst was mit jeder pid anstellen... ## z.B. ausgeben: print "$pid\n"; } ==== beisskante ==== (wobei der letztere Block natuerlich auch als: foreach(@pids) { print "$_\n"; } geschrieben werde koennte... Das erschlaegt auch ein mehrfaches Auftreten (wie z.B. fuer den nscd, mingetty, bash, httpd oder anderen Prozesse)... Ausserdem sind die Aufrufe von grep + grep|head[1] + cut ueberfluessig, solange man eh schon in perl arbeitet sollte das doch deutlich effektiver sein, zumal auch die pipes erstmal angelegt werden wollen... ;) -dnh [1] das 'head' finde ich sowieso zweifelhaft, beser waere wohl ein 'grep -v "grep"'... -- 18. To solve an interesting problem, start by finding a problem that is interesting to you. --- Eric S. Raymond, "The Cathedral and the Bazaar"