PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ausgaben v. ls oder find unterdruecken



16-12-2000, 18:46
Hi,
ich möchte in einem Script alle Dateien mit bestimmten Rechten vor der Verarbeitung wegkopieren. Deshalb weil während des Scriptlaufs im ausgangsverzeichnis noch Dateien entstehen können, die ich aber noch nicht benutzen kann.
Die benutzbaren Dateien habe 0666 als Rechtemuster. Ich habe also einen Befehl "mv $(find *.tif -perm 0666) /VERZEICHNIS/". Dieser Befehl liefert wenn keine Datei da ist eine Fehlerbeschreibung für den mv, welche per Mail des Cronjobs versandt wird.
Der Fehlerkanal ist auf /dev/null umgeleitet.
Ich habe dann davor noch:
ls *.tif
[ $? != 0 ] && exit 0
probiert, aber dann bekomme ich die Mail für ls.
Was kann ich tun, daß dies aufhört?
MfG,
Werner

mightymike99
18-12-2000, 02:32
Sorry da blick ich nich ganz durch!

Oder meinst du das?

ls *.tif 2>/dev/null

18-12-2000, 17:24
Hi,
o.k., etwas mehr vom Hintergrund.
Ich habe einen Linuxrechner mit Hylafax, der Faxe für die Firma empfangen soll. Während des Faxempfangs hat die Datei 0600 Rechteschema. Nach Abschluß des Faxempfangs hat die Datei 0666.
Da ich unter Linux eine Datei tatsächlich verschieben kann, obwohl der Faxserver gerade in diese schreibt, bekomme ich mit meinem Script welches zu bestimmten Zeiten läuft Probleme.
Dieses prüft nicht, ob der Faxserver aktiv ist und/oder eine Datei eigentlich belegt.

Deshalb sollen am Anfang meines Scripts alle angekommenen Faxe, die vollständig empfangen sind, also Rechteschema 0666 haben in ein anderes Verzeichnis verschoben werden und dann von dort aus zu pdf`s gemacht werden usw.

Den Befehl, den ich eigentlich zum Verschieben verwenden wollte war:
mv $(find *.tif -perm 0666) /VERZEICHNIS/

nur: wenn im Verzeichnis keine *.tif-Datei ist, bekomme ich bei jedem CRON-Lauf eine Fehlermeldung.

Diese wirft den Hilfetext von mv aus.

Dann habe ich probiert, dies dadurch zu umgehen, daß ich vor dem mv mit:
ls *.tif
[ $? != 0 ] && exit 0

abfrage, ob ein tif vorhanden ist, wenn nicht , soll ein exit gemacht werden.

Jetzt bekomme ich ein Mail für den ls :-( .

mit exec habe ich den Fehlerkanal nach /dev/null umgeleitet, glaube ich zumindest.

Kann ich die Meldungen abstellen?
MfG,
Wernr

18-12-2000, 17:26
Hi,
o.k., etwas mehr vom Hintergrund.
Ich habe einen Linuxrechner mit Hylafax, der Faxe für die Firma empfangen soll. Während des Faxempfangs hat die Datei 0600 Rechteschema. Nach Abschluß des Faxempfangs hat die Datei 0666.
Da ich unter Linux eine Datei tatsächlich verschieben kann, obwohl der Faxserver gerade in diese schreibt, bekomme ich mit meinem Script welches zu bestimmten Zeiten läuft Probleme.
Dieses prüft nicht, ob der Faxserver aktiv ist und/oder eine Datei eigentlich belegt.

Deshalb sollen am Anfang meines Scripts alle angekommenen Faxe, die vollständig empfangen sind, also Rechteschema 0666 haben in ein anderes Verzeichnis verschoben werden und dann von dort aus zu pdf`s gemacht werden usw.

Den Befehl, den ich eigentlich zum Verschieben verwenden wollte war:
mv $(find *.tif -perm 0666) /VERZEICHNIS/

nur: wenn im Verzeichnis keine *.tif-Datei ist, bekomme ich bei jedem CRON-Lauf eine Fehlermeldung.

Diese wirft den Hilfetext von mv aus.

Dann habe ich probiert, dies dadurch zu umgehen, daß ich vor dem mv mit:
ls *.tif
[ $? != 0 ] && exit 0

abfrage, ob ein tif vorhanden ist, wenn nicht , soll ein exit gemacht werden.

Jetzt bekomme ich ein Mail für den ls :-( .

mit exec habe ich den Fehlerkanal nach /dev/null umgeleitet, glaube ich zumindest.

Kann ich die Meldungen abstellen?
MfG,
Wernr

rup
18-12-2000, 19:08
Hallo Werner

Teste einfach mal:

mv $(find *.tif -perm 0666 2> /dev/null) /VERZEICHNIS/ 2> /dev/null

geht zwar sicher irgendwie schöner aber ich glaube es funzt so. 1. Fehlerumleitung für find und die 2. für mv

Gruß Rupert

[Dieser Beitrag wurde von rup am 18. Dezember 2000 editiert.]

mightymike99
18-12-2000, 22:06
Hi,

das Problem ist zwar eigentlich schon geloest. Aber als Anmerkung fuer guten Programmierstil(...wer dafuer Zeit hat):

Fehler nicht erst auftreten lassen wenn moeglich, hier treten zwei Fehler auf den einen kann man verhinden:

FILES=$(find /VERZ -name "*.tif" -perm 0666 2> /dev/null)
[ X$FILES != X ] && mv $FILES /VERZ/

mfg Tobias

thommy
19-12-2000, 08:19
Mit exec geht's so:

exec 2>/ven/null

Das am Anfang des Skripts und alle Fehlermeldungen landen im Nirwana http://www.linuxforen.de/ubb/wink.gif

Thomas

19-12-2000, 09:00
Hallo,
vielen Dank für Eure Antworten,
inzwischen habe ich bemerkt, daß meine Probleme wohl davon kommen, daß ich die Befehle aus Versehen vor dem "exec 2>/dev/null" geschrieben.

Tobias:
der Befehl [ X$FILES != X ] && mv $FILES /VERZ/
bewirkt, daß in der Klammer nichts Leeres steht, oder?

Grüße,
Werner

mightymike99
19-12-2000, 22:03
Wenn FILES nicht leer ist fuehre aus "mv ..."