Ich würde gerne ein Muster aus mehreren Protokolldateien grep, die ständig von einigen Prozessen aktualisiert werden und die Ausgabe dieses Grep kontinuierlich fortsetzen. Unter Befehl funktioniert nicht und ich bekomme - Tail: Warnung: nach Standardeingabe unendlich ist unwirksam
%Vor%Kann jemand helfen, das herauszufinden?
Sie sollten sich das Tool multitail
(Installieren mit sudo apt-get install multitail
) ansehen
Kurz gesagt, mit Multitail müssen Sie das --mergeall
Flag verwenden, um die Ausgabe von allen an einem Ort anzuzeigen
Sie können dasselbe tun, ohne grep zu verwenden
%Vor%Um die Ausgabe einzeln mit Multitail anzuzeigen, gibt dies auch den Dateinamen .
%Vor% Das ist eine interessante Frage und die einfache Antwort sollte lauten: Verwenden Sie die Präfix-Option mit Tail , aber leider ist dies in den meisten Versionen von tail
nicht implementiert.
Wie ich es sehe, haben Sie zwei Möglichkeiten: Passen Sie die Standardwerkzeuge an die Aufgabe an (siehe Udys antworten Sie ) oder schreiben Sie Ihr eigenes Tool mit Ihrer bevorzugten Skript- / Programmiersprache.
Unten ist eine Möglichkeit, wie Sie es mit dem Modul File::Tail::Multi
für perl
machen können. Beachten Sie, dass Sie das Modul möglicherweise von CPAN ( cpan -i File::Tail::Multi
) installieren müssen.
Speichern Sie das folgende Skript z. mtail
zu Ihrem ausführbaren Pfad und machen das Skript ausführbar.
Ändern Sie OutputPrefix
in 'p'
, wenn Sie vollständige Pfadpräfixe bevorzugen.
Führen Sie es wie folgt aus:
%Vor% Sie müssen --line-buffered
nicht angeben, wenn grep
der letzte Befehl ist. Dies ist also ausreichend: