Sei hier vorsichtig; Durch einfaches Catting werden die Ergebnisse auf eine Weise gemischt, die Sie möglicherweise nicht möchten. Wenn es sich beispielsweise um Protokolldateien handelt, möchten Sie wahrscheinlich nicht wirklich, dass eine Zeile von einer zur Hälfte durch eine Zeile von der anderen eingefügt wird. Wenn das in Ordnung ist, dann
tail -f / tmp / p1 / tmp / p2> / tmp / output
wird funktionieren. Wenn das nicht in Ordnung ist, müssen Sie etwas finden, das die Zeilenpufferung übernimmt und nur vollständige Zeilen ausgibt. Syslog macht das, aber ich bin mir nicht sicher, was sonst könnte.
EDIT: Optimierung für ungepuffertes Lesen und Named Pipes:
Betrachtet man / tmp / p1, / tmp / p2, / tmp / p3 als Named Pipes, erstellt von "mkfifo / tmp / p N "
tail -q -f / tmp / p1 / tmp / p2 | awk '{print $ 0> "/ tmp / p3"; close ("/ tmp / p3"); fflush ();} '&
Jetzt können wir auf diese Weise die Ausgabe der Named Pipe "/ tmp / p3" ungepuffert lesen :
Schwanz -f / tmp / p3
Es gibt einen kleinen Fehler der Art, Sie müssen die 1. Input Pipe / tmp / p1 "initialisieren" durch:
echo -n> / tmp / p1
Damit wird Tail die Eingabe von 2nd Pipe / tmp / p2 zuerst akzeptieren und nicht warten, bis etwas zu / tmp / p1 kommt. Dies ist möglicherweise nicht der Fall, wenn Sie sicher sind, dass das / tmp / p1 zuerst Eingaben empfängt.
Auch die Option -q ist , um benötigt Schwanz nicht Müll über Dateinamen drucken.