tail -f aber sauge zuerst den Inhalt der Datei ein (auch bekannt als `cat -f`)

9

Ich brauche ganze Datei anzuzeigen , bevor es für eine neue Veränderungen, nicht nur die letzten 10 Zeilen Tracking (yep, ich weiß , es ist nicht Schwanz konzeptionell). Mit anderen Worten, so etwas cat -fwürde tun, wenn es jemals existieren würde. Tails Mann gibt mir keine Ideen. Die einzige Option, die ich momentan sehe, besteht darin, alle bis auf die letzten 10 Zeilen und die Schwanz-F- Ausgabe irgendwie zu kombinieren .

Irgendwelche Hinweise bitte?

OM Nom Nom
quelle
3
cat $f && tail -n0 -f $fkommt in den Sinn, und das Überprüfen der Manpage, wie es aussieht, tail -c0 -f $fkönnte auch das tun, was Sie wollen (und besser sein, weil es keine Race-Bedingung zwischen den beiden Prozessen schafft, bei der geschriebene Daten ignoriert werden könnten). Ich habe momentan keinen Zugriff auf ein Linux-System, aber macht einer von beiden das, was Sie wollen?
ein CVn
Dies ist nützlich, und ich habe gerade einer Programmiersprache eine solche Funktion hinzugefügt: einen "Tail-Stream", der eine Datei normalerweise von Anfang bis Ende lesen kann und dann am Ende in den "Tail-f" -Modus wechselt und dies auch bemerkt Die Datei wurde durch eine kürzere ersetzt oder abgeschnitten. Sie benötigen dies, um beispielsweise vorhandene Protokolle verarbeiten (einen Rückstand aufholen) und dann mit der Verarbeitung neuer Einträge beginnen zu können.
Kaz

Antworten:

14

Hier ist eine Möglichkeit, dies zu tun:

tail -f -n+0 /var/log/messages

Es scheint keinen Unterschied zwischen a +0und a zu geben +1, daher wäre dies gleichbedeutend:

tail -f -n+1 /var/log/messages
slm
quelle
2
Relevanter Teil der Manpage (erspart den Leuten das Tippen) ... -n, --lines = K gibt die letzten K Zeilen anstelle der letzten 10 aus; oder verwenden Sie -n + K, um Zeilen auszugeben, die mit dem Kth
dementen Igel beginnen.