On Wed, May 28, 2003 at 12:34:21AM +0200, 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";
hmm, und wenn Du das jetzt nicht in Dein Log schreibst sondern in einen String? Danach mit strlen oder wie auch immer das unter perl heissen mag :) prüfen ob da was drin steht und wenn ja in eine Datei schreiben und sonst einfach ignorieren?
Ich kenne perl nicht, aber das was Du da stehen hast sieht erstmal so aus, als wuerde es auch in bash funktionieren ;).
ACK
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.
ACK
Und da diese den Dateinamen beinhaltet, der sich ca 800x am Tag ändert könnte das schnell ausarten. Kann man das nicht "umgehen" ?
ja schreib alle log Einträge in _eine_ Datei.
Oder andere Möglichkeit: Kann ich den Inhalt von $name im Fehlerfall in eine Datei schreiben ?
wie währe es mit eine Prüfung des exitcodes. 0 == OK Wenn != 0 Fehler in Datei Packen sonst nix tun.
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
zuerst erstellen dann Löschen und das 800 mal am Tag... nicht so gut für die Platte :) von der Sinn frage mal ganz abgesehen :)
Was auch gehen muesste, ist folgendes: shell-aufruf && echo "Alles ok" || "Fehler aufgetreten"
das sieht doch gut aus.
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.
äh nooeee doch nicht "sorum" Wenn Fehler dann Log schreiben ist doch wohl sinnvoller, oder? Greetings Daniel -- Darkness is falling, over my mind | http://www.againsttcpa.com/ My burning eyes are, deadly blind | http://www.notcpa.org/ Now there is nothing like it seem | http://chaosradio.ccc.de/cr78.html All illusion, only dreams........ --- Darkwell "Realm Of Darkness"