On Fri, 7 Jan 2005 10:54:17 +0100 (CET)
Oliver Fromme <olli(at)lurza.secnetix.de> wrote:
> Manfred Lotz <manfred.lotz(at)web.de> wrote:
>  > Ich leite in einem Script output um in eine Datei (appending),z.B.
>  > 
>  >         echo "one important line: $somevar"  >> /somepath/mylog
>  >         2>&1 
> 
> Das "2>&1" solltest Du besser weglassen.
> 
Ja klar. echo schreibt ja auch sowieso nur auf stdout.
>  > Was passiert, wenn das Script von mehreren zur gleichen Zeit
>  > aufgerufen wird. Wird das Anhängen an die Datei irgendwie
>  > serialisiert oder kann da Output verloren gehen?
> 
> Output geht mit Sicherheit nicht verloren (das garantiert
> das Flag O_APPEND, das beim Anhängen mit ">>" verwendet
> wird).
> 
> Die Frage ist nur, ob die Ausgaben durcheinander kommen
> können, oder ob jede ausgegebene Zeile auch eine eigene
> Zeile in der Logdatei bleibt.  Wenn die Zeilen, die Du mit
> echo ausgibst, kürzer sind als die Default-stdio-Buffer-
> größe, dann klappt es, weil der Schreibzugriff dann ein
> einzelnes, atomares write(2) ist, anderenfalls besteht die
> Möglichkeit, daß Zeilen gemischt werden.
> 
> Die Buffer-Größe wiederum richtet sich nach dem Dateisy-
> stem, auf dem sich die Datei befindet, in die Du schreibst.
> Bei FreeBSD's UFS ist das per Default 8 Kbyte.  Wenn Du da-
> gegen in eine Pipe schreibst, ist der Default 1 Kbyte (wie-
> derum bei FreeBSD; bei anderen Systemen kann die Größe an-
> ders sein).  Das ist auch der Grund, warum folgende beiden
> Kommandos sich unterschiedlich verhalten können:
>    $ echo "$BLABLABLA" >> foo
>    $ echo "$BLABLABLA" | cat >> foo
> Man sollte immer besser ersteres machen (ohne cat) wegen
> des größeren Buffers.  Außerdem spart es einen überflüssi-
> gen Prozeß, einen überflüssigen Filedescriptor und eine
> überflüssige Pipe, die die ganzen Daten noch mindestens
> zweimal (überflüssig) herumkopiert.
> 
> Langer Rede kurzer Sinn:  Wenn Deine Zeilen hinreichend
> kurz sind, gibt es keine Probleme.
> 
Die Zeilen sind kurz, max. 200 Bytes pro Zeile. Dann sollte es also
gehen.
-- Danke, Manfred To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org with "unsubscribe de-bsd-questions" in the body of the messageReceived on Fri 07 Jan 2005 - 17:45:15 CET