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. Damit wuerde die Datei gleich wieder geloescht, wenn sie 0 Byte gross ist. siehe auch man 1 find Was auch gehen muesste, ist folgendes: shell-aufruf && echo "Alles ok" || "Fehler aufgetreten" Alles nach && wird ausgefuehrt, wenn der shell-Aufruf erfolgreich war (exit 0) und alles nach || wird ausgefuehrt, wenn ein non-zero exit-code vom shell-aufruf zurueckkommt. siehe man 1 bash Daraus kannst Du z.B. folgendes machen: $aufruf = $aufruf + " && rm -f $Dateiname" Das muesste, falls es keinen Fehler gab, also bei exit-code 0, die Log-Datei sofort wieder loeschen. MfG, Conrad Gliem, reg. Linux-User 250333