Ausgabe lässt sich nicht umpipen

Jan-Benedict Glaw jbglaw at lug-owl.de
Thu Jan 13 22:29:19 CET 2005


On Thu, 2005-01-13 21:14:42 +0100, Nico Bredenbals <nbredenbals at gmx.net>
wrote in message <41E6D6B2.5030800 at gmx.net>:
> Jan-Benedict Glaw schrieb:
> >On Wed, 2005-01-12 23:19:01 +0100, Nico Bredenbals <nbredenbals at gmx.net>
> >wrote in message <41E5A255.1060105 at gmx.net>:
> >
> >>Hallo Group,
> >>ich möchte den Prozess sserver im HG starten und seine Ausgabe in 
> >>/dev/null pipen. also dachte ich mir:
> >>
> >>./sserver & > /dev/null
> >
> >
> >Du mußt erst umleiten, dann in den Hintergrund befördern; außerdem gibt
> >es zwei Ausgabe-Kanäle (stdout und stderr), die Ausgaben zum Terminal
> >machen können, also solltest Du beide umleiten:
> >
> >./sserver > /dev/null 2>&1 &

Also...
">" ist eine Abkürzung für "1>", was bedeutet: "Leite file descriptor #1
um nach ...". Im System hat an der Shell jedes Programm drei file
descriptors standardmäßig zur Verfügung:

	0 - stdin
	1 - stdout
	2 - stderr

Alle sind normalerweise mit dem aktuellen Terminal verbunden; von 0
werden die Tastatur-Eingaben gelesen, an 1 gehen normale Meldungen und
an  werden alle Fehler geschickt. Mit ">" (oder "1>" in Langform) werden
also die normalen Ausgaben umgeleitet.

Nun kommt "2>&1". "2>" funktioniert wir erwartet: die Fehlerausgaben
werden umgeleitet. Neu ist "&1", das bedeutet: "kopiere den aktuellen
file descriptor #1". Im obrigen Beispiel zeigt der zu diesem Zeitpunkt
schon auf /dev/null. Wichtig bei diesen Umeleitungen ist, zu beachten,
daß alle Umleitungen streng von links nach rechts abgearbeitet werden.

> Ich vermute 2>&1 steht für die beiden stdouts, aber was genau heißt das?
> Könnte ich auch stdout in /dev/null pipen und stderr in sserver-errlog 
> oder so?

Ja, das geht auch:

./sserver > /dev/null 2> /tmp/my-log-file

Du kannst mit geschicktem Umleiten sogar z.B. nur die Fehler-Ausgaben
weiterverarbeiten:

./sserver 2>&1 > /dev/null | less -S

MfG, JBG

-- 
Jan-Benedict Glaw       jbglaw at lug-owl.de    . +49-172-7608481             _ O _
"Eine Freie Meinung in  einem Freien Kopf    | Gegen Zensur | Gegen Krieg  _ _ O
 fuer einen Freien Staat voll Freier Bürger" | im Internet! |   im Irak!   O O O
ret = do_actions((curr | FREE_SPEECH) & ~(NEW_COPYRIGHT_LAW | DRM | TCPA));
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lug-owl.de/pipermail/linux/attachments/20050113/6b56cf42/attachment.sig>


More information about the Linux mailing list