Ist es möglich, eine tail -f
(oder ähnliche) Datei grep
gleichzeitig zu bearbeiten? Es würde mir nichts ausmachen, wenn andere Befehle nur nach dieser Art von Verhalten Ausschau halten.
shell
command-line
grep
tail
Xenoterracid
quelle
quelle
Es wird gut funktionieren; Wartet im Allgemeinen,
grep
wenn ein Programm nicht ausgegeben wird, und liest weiter, wenn die Ausgabe eingeht.5 Sekunden lang passiert nichts, dann gibt grep den passenden "Test" aus, und fünf Sekunden später wird er beendet, wenn der Pipe-Prozess beendet ist
quelle
In
--line-buffered
zugrep
, und das kann die Verzögerung für Sie reduziert. In manchen Fällen sehr nützlich.quelle
grep
nicht an ein Terminal gesendet wird (umgeleitet zu einem anderen Dateityp). Die Zeilenpufferung ist die Standardeinstellung, wenn die Ausgabe an ein Terminal gesendet wird, sodass es dort keinen Unterschied macht. Beachten Sie, dass diese Option GNU-spezifisch ist.Sie können einfach die Ausgabe von
grep
in umleitentail -f
. Es gibt auch Programme, dietail -f
Funktionalität mit Filtern und Färben kombinieren , insbesondere Multitail ( Beispiele ).quelle
Ich sehe all diese Leute sagen zu verwenden
tail -f
, aber ich mag die Einschränkungen davon nicht! Meine Lieblingsmethode beim Durchsuchen einer Datei und beim Suchen nach neuen Zeilen (z. B. arbeite ich normalerweise mit Protokolldateien, an die die umgeleitete Ausgabe von Prozessen angehängt wird, die regelmäßig über Cron-Jobs ausgeführt werden):Dies setzt GNU-Tail und grep voraus. Unterstützende Details aus der Tail-Manpage (GNU coreutils, meins ist v8.22) [ https://www.gnu.org/software/coreutils/manual/coreutils.html] :
Der hintere Teil meines Befehls entspricht also der Anweisung
tail --follow --retry --lines=+0
, am Anfang zu beginnen, wobei Nullzeilen übersprungen werden.quelle
Benutze das Obige, ich benutze es normalerweise.
quelle
Sie können netcat verwenden, um die Ergebnisse von tail -f zu erfassen, da neue Ergebnisse recht einfach eingehen.
Dadurch wird grep so eingestellt, dass es die Ergebnisse auf Eingaben von Port 1337 überwacht.
Der zweite Befehl leitet die Ausgabe von tail -f an netcat weiter und sendet sie an localhost 1337. Um dies lokal zu tun, müssen Sie ttys für jeden der beiden Befehlssätze umschalten , oder verwenden Sie so etwas wie Bildschirm.
quelle
Es klappt. Achten Sie jedoch darauf, dass die Ausgabe nicht mehr sofort erfolgt: Sie wird durch die Pipe gepuffert.
quelle
tail -f
in einem Fenster undtail -f logfile | grep pattern
in dem anderen Fenster aus. Zeilen, die enthaltenpattern
, werden nicht immer gleichzeitig in beiden Fenstern angezeigt. Ich habe in seltenen Fällen gesehen, dass Linien im Abstand von 30 Sekunden erscheinen, was ärgerlich war.tee
oder so.