[Cologne-pm] script auf mehreren CPU's starten
Michael Lamertz
mike at lamertz.net
Fri Nov 11 12:04:28 PST 2005
Tsk, tsk, tsk, Aristoteles, hattest Du eine schlaflose Nacht, oder hast
Du meinen Post einfach nicht gelesen? ;-)
On Fri, Nov 11, 2005 at 05:20:08PM +0100, A. Pagaltzis wrote:
> * Michael Lamertz <mike at lamertz.net> [2005-11-11 10:35]:
> > Also, 'tar => 1,2,3' macht nix anderes, als Dir eine Liste
> > ('tar', 1, 2, 3) zu erzeugen.
>
> Ja, oder um es anders zu sagen, der `=>` ist nichts anderes als
> ein Komma, das es einem erspart, wenn man auf der linken Seite
> einen sehr einfach String hat, ihn in Anführungszeichen zu
> setzen. (Der String darf nur Buchstaben, Ziffern und Unterstriche
> enthalten.)
Das hatte ich exakt einen Absatz ueber der von Dir gequoteten Zeile auch
beschrieben:
$self wrote direkt darueber:
> Erschreckt Dich der => Operator?
>
> ---------- perldoc perlop ----------
> The "=>" operator is a synonym for the comma, but forces any word
> (consisting entirely of word charac- ters) to its left to be
> interpreted as a string (as of 5.001). If the argument on the left
> is not a word, it is first interpreted as an expression, and then
> the string value of that is used.
> ---------- perldoc perlop ----------
> > Btw.: Wusstet Ihr, dass $0 bei Perl von aussen anscheinend
> > nicht ueberschrieben werden kann?
>
> Jepp. Aus `perldoc perlvar`:
>
> (docs snipped)
>
> M.a.W., das Verändern von $0 ist extrem plattformspezifisch und
> daher keine besonders gute Angewohnheit.
Irrtum. Das bezieht sich auf die Veraenderung von $0 durch das laufende Script
selber, wie es z.B. screen auch macht. Im ps wird dann naemlich SCREEN
angezeigt.
---------- fake.pl ----------
#!/usr/bin/perl
$0 = 'FAKED';
sleep 30;
---------- fake.pl ----------
und
---------- snip ----------
nijushiho:~$ ./fake.pl &
[1] 4993
nijushiho:~$ ps -aef | grep 4993
mlamertz 4993 4948 0 20:47 pts/2 00:00:00 FAKED
mlamertz 4995 4948 0 20:47 pts/2 00:00:00 grep 4993
nijushiho:~$
---------- snip ----------
Das Vorgaukeln des falschen Namens von aussen ist durchaus nicht unueblich.
Ein allseits bekanntes Beispiel ist z.B. gzip/gunzip:
---------- snip ----------
nijushiho:~$ ls -li /bin/gzip /bin/gunzip
3620878 -rwxr-xr-x 4 root root 53676 Jul 11 22:18 /bin/gunzip*
3620878 -rwxr-xr-x 4 root root 53676 Jul 11 22:18 /bin/gzip*
nijushiho:~$
---------- snip ----------
See you datt? Ist dasselbe Programm. Benutzt Du nun das 'call'-Script
von meiner Mail heute Mittag, dann kannst Du damit aus gzip ganz einfach
gunzip machen, und das Programm reagiert entsprechend auf die Aenderung:
---------- snip ----------
tweety:~$ ./call gzip gunzip --help
gunzip 1.3.5
(2002-09-30)
usage: gunzip [-cdfhlLnNrtvV19] [-S suffix] [file ...]
-c --stdout write on standard output, keep original files unchanged
-d --decompress decompress
-f --force force overwrite of output file and compress links
-h --help give this help
-l --list list compressed file contents
-L --license display software license
-n --no-name do not save or restore the original name and time stamp
-N --name save or restore the original name and time stamp
-q --quiet suppress all warnings
-r --recursive operate recursively on directories
-S .suf --suffix .suf use suffix .suf on compressed files
-t --test test compressed file integrity
-v --verbose verbose mode
-V --version display version number
-1 --fast compress faster
-9 --best compress better
--rsyncable Make rsync-friendly archive
file... files to (de)compress. If none given, use standard input.
Report bugs to <bug-gzip at gnu.org>.
tweety:~$
---------- snip ----------
Und so wie's aussieht (nochmal, siehe Mail von vorhin), geht das bei Perl
irgendwie nicht, da der Fake-Name eben nicht angezeigt wird. Ich hab's gerade
bei 'nem Shell-Script ausprobiert, und da funktioniert's auch nicht.
Haengt wohl damit zusammen, dass die #!-Zeile ja erst noch den
Interpreter dazwischen schaltet.
Wieder 'was gelernt...
--
Well, then let's give that Java-Wussie a beating... (me)
Michael Lamertz | +49 2234 204947 / +49 171 6900 310
Sandstr. 122 | mike at lamertz.net
50226 Frechen | http://www.lamertz.net
Germany | http://www.perl-ronin.de
More information about the Cologne-pm
mailing list