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