Hallo, On Wed, 28 May 2003, conrad@gliem.de wrote:
On Tue, 27 May 2003, Yann Wissenbach wrote:
Sent: Tuesday, May 27, 2003 9:28 PM
0n 03/05/27@15:05 Yann Wissenbach told me:
Folgendes produziert aber IMMER ein log... Wenn kein Fehler kam ein log mit 0 bytes.
[Ausschnitt einer While Schleife aus einem Perl sript] $aufruf = "/usr/bin/gs -q -dNOPAUSE -dBATCH -sDEVICE=jpeggray -r300x300 -sOutputFile=$ kundenverzeichnis/$ebene1/$ebene2/$ebene3/$name.jpg $pdfin/$file 1>> /scripts/log/$name_`date +%d%m%Y`.log 2> /dev/null";
Ich kenne perl nicht, aber das was Du da stehen hast sieht erstmal so aus, als wuerde es auch in bash funktionieren ;).
Du leitest ja auch die Standardausgabe (1) in das logfile. Wenn es die Fehlerausgabe (2) sein soll, solltest Du die nicht nach /dev/null schicken.
Ja, dieser Bash Befehl wird von Perl aus ausgeführt :) leider wird dann trotzdem noch diese log datei angelegt - halt mit 0 Byte.
Und da diese den Dateinamen beinhaltet, der sich ca 800x am Tag ändert könnte das schnell ausarten. Kann man das nicht "umgehen" ? Eine Idee war per cron auf das Log Verzeichnis zu schauen und alle 0 Byte grossen Dateien zu löschen. Begeistert bin ich davon aber nicht...
Oder andere Möglichkeit: Kann ich den Inhalt von $name im Fehlerfall in eine Datei schreiben ?
eine Moeglichkeit: gleich nach dem $aufruf noch folgendes ausfuehren (bash): find $Dateiname -size 0 -exec rm -f $Dateiname vorausgesetzt, dass in $Dateiname der Dateiname enthalten ist.
Oerks. Bash: test -s $Dateiname || rm $Dateiname Perl: if ( -z $Dateiname ) { unlink($Dateiname); } Genauer gesagt sollte man also das Logfile _vor_ dem Kommando festlegen, dann das Kommando ausfuheren und dann ggfs. das Log loeschen. Perl: ==== ungetestet und unsauber ==== use strict; use POSIX qw(strftime); my $DS = '/'; my $name = "foo"; my $kundenverzeichnis = "/bla"; my $ebene1 = "blubb"; my $ebene2 = "laber"; my $ebene3 = "suelz"; my $logfilename = "/scripts/log/" . $name . strftime("%Y%m%d", localtime()) . ".log"; my @cmd = ( "/usr/bin/gs", "-q", "-dNOPAUSE", "-dBATCH", "-sDEVICE=jpeggray" "-r300x300", "-sOutputFile=" . "${kundenverzeichnis}${DS}${ebene1}${DS}${ebene2}${DS}${ebene3}${DS}" . "$name.jpg" "$pdfin/$file" ">/dev/null", "2>>$logfilename" ); system(@cmd); if ( ($? >> 8) == 0 || -z $logfilename ) { unlink($logfilename); } ==== -dnh -- 187: ~ftp/pub/incoming/ Angeklagter, warum hatte der Briefkasten, in dem das rechtspornographische und kinderradikale Material (Beweisstück A) sichergestellt wurde, das Sie nicht bestellt zu haben behaupten, einen öffentlich zugänglichen Einwurfschlitz? (Anselm Lingnau)