Ist `tail -f` effizienter als` less + F`?

34

Dieser Artikel wies auf einige Gründe heraus zu verwenden less +Füber tail -f. Die meisten Gründe beziehen sich auf die Funktionen , nicht auf technische Gründe: less +FKann Dateien hervorheben, durchsuchen und durch sie navigieren.

Wie wäre es mit den technischen Gründen?

AFAIK, lessverwendet Polling jede Sekunde , um die Datei zu aktualisieren, während tail, wie POSIX definierte eine Schleife verwenden , die Schlafplätze für 1 Sekunde und kopiert alle Bytes , die verfügbar sind. Dies ist ausreichend, POSIX hat jedoch auch die Implementierung ermutigt, effizientere Methoden zu verwenden. Zumindest die GNU-Tail- Nutzung ist inotify , also effizienter.

less Außerdem wird der Dateiinhalt im Speicher gehalten, sodass bei großen Dateien wie einigen Gigabyte der Computer langsamer werden kann.

So ist es andere technische Gründe für den Einsatz tail -füber less +F?

cuonglm
quelle

Antworten:

37

Ich denke, Sie haben den Hauptpunkt behandelt: less +FLiest die gesamte Datei, wohingegen auf vielen Systemen tail -fnur das Ende der Datei gelesen wird, und selbst auf den Systemen, auf denen die gesamte Datei gelesen wird, wird zumindest nicht die gesamte Datei beibehalten in Erinnerung. Dies ist less +Fbei sehr großen Dateien unpraktisch. Sie können jedoch ausführen less -n +F, was dazu führt less, dass nur das Ende der Datei gelesen wird, und zwar auf Kosten der Nichtanzeige von Zeilennummern.

Der Hauptunterschied zwischen less -n +Fund besteht darin tail -f, dass tailauf einigen Plattformen ein Benachrichtigungsdienst für Dateiänderungen verwendet wird (z. B. inotify unter Linux), mit dem neue Daten sofort lessangezeigt werden können. Die Anzeige der neuen Daten kann jedoch bis zu 1 Sekunde dauern weil es in einer Schleife nach neuen Daten sucht und zwischen den Überprüfungen schläft.

Ein weiterer Unterschied zwischen less +Fund tail -fbesteht darin, dass lessder Eingabefilter aufgerufen wird, dies hat jedoch normalerweise keine Auswirkungen auf die Protokolldateien.

Ein technischer Unterschied, der sich positiv auswirkt, less +Fbesteht darin, dass Sie mit der -SOption festlegen können, dass Linien auf der Bildschirmbreite abgeschnitten werden. tailSie haben jedoch keine andere Wahl, als die gesamte Linie anzuzeigen, egal wie lang sie ist.

In Bezug auf die Benutzeroberfläche ist die Verwendung nicht besonders vorteilhaft less. tail -fEs ist nützlich zu bemerken, wenn etwas passiert. Sie können es sogar im Hintergrund ausführen. Wenn etwas passiert und Sie sich die Datei genauer ansehen möchten, können Sie sie lessin einem anderen Terminal öffnen .

Wenn Sie mehrere Dateien anzeigen möchten, ist Multitail der richtige Weg. Selbst für eine einzelne Datei bietet Multitail zusätzliche nützliche Funktionen wie Filterung und Einfärbung.

Gilles 'SO - hör auf böse zu sein'
quelle
Verhindert 'less -n 99.99p + F' bei sehr großen Dateien, dass weniger die gesamte Datei liest?
Cuonglm
1
@ Cuonglm Ah, richtig, das tut es. Dies less -nist genug, um die Strategie des Suchens nach dem Ende und des Zurücklesens weniger zu nutzen.
Gilles 'SO- hör auf böse zu sein'