Redirect an Pipe

29/03/2009 - 18:01 von Nikolaus Rath | Report spam
Hallo,

Mit

exec >> /var/log/bla.log
exec 2>&1

am Anfang eines Scripts kann ich die restlichen Ausgaben des Scripts
in die Logdatei umleiten. Ich würde nun aber gerne statt in eine Datei
in die Pipe eines Hintergrundprozesses schreiben. Ich habe weder in
`man bash` noch in `man dash` entsprechendes gefunden, und mein naiver
Ansatz mit

exec | logger &
exec 2>&1

hat ebenfalls nicht funktioniert. Wahrscheinlich ist die richtige
Vorgehensweise offensichtlich wenn man die entsprechenden
Hintergrundkenntnisse hat, aber ich komme einfach nicht drauf. Kann
mir jemand weiterhelfen?

(bash-spezifische Lösungen sind ebenfalls willkommen falls es ohne
nicht geht.)


Gruß,

-Nikolaus

»Time flies like an arrow, fruit flies like a Banana.«

PGP fingerprint: 5B93 61F8 4EA2 E279 ABF6 02CF A9AD B7F8 AE4E 425C
 

Lesen sie die antworten

#1 Sebastian Waschik
29/03/2009 - 20:02 | Warnen spam
Hallo,

Nikolaus Rath writes:

[...]

am Anfang eines Scripts kann ich die restlichen Ausgaben des Scripts
in die Logdatei umleiten. Ich würde nun aber gerne statt in eine Datei
in die Pipe eines Hintergrundprozesses schreiben. Ich habe weder in
`man bash` noch in `man dash` entsprechendes gefunden, und mein naiver
Ansatz mit

exec | logger &



[...]

brauchst du das wirklich so? Reicht es nicht einfacht alle Ausgaben
in einem Block zu fassen?

,-
| {
| echo B
| echo A
| } | sort
`-

Mit named pipes (fifos) scheint es zu klappen. Damit hat man aber die
Probleme, dass man einen eindeutigen Namen wàhlen muss und den nach
Skriptende wieder löschen sollte.

,-
| mkfifo FIFO
|
| sort <FIFO &
|
| exec >FIFO
|
| echo b
| echo a
`-

Viele Grüße
Sebastian Waschik

Ähnliche fragen