tail -f verfolgt keine Dateiänderungen

6581

Ich habe vor kurzem versucht, einige tail -fTextdateien wie tail -f /var/sometextfolgt zu überwachen: Wenn ich jedoch ein paar Tests durchführte, scheint es nicht zu funktionieren. Was ich tat, war, dass ich eine neue Datei erstellte und lief: tail -f /home/name/textDann öffnete ich das Log in vim und bearbeitete es, speicherte es, und es scheint, dass "tail" die Änderung nicht "sieht".

Das Seltsame ist, Laufen echo "hello" >> /home/name/textscheint gut zu funktionieren (Schwanz sieht die Veränderung). Ich habe irgendwo gelesen, dass dies etwas mit Dateideskriptoren und neuen Inodes zu tun hat, die beim Speichern einer Datei erstellt werden. Kann mir jemand das erklären? Ich habe nicht ganz verstanden, wie das tatsächlich funktioniert, aber ich habe eine Vorstellung davon, welche Dateideskriptoren es sind. Vielen Dank!

11

3 Antworten auf die Frage

26
Ignacio Vazquez-Abrams

-ffolgt von inode. Wenn Sie nach Name suchen möchten, z. B. wenn ein Programm die Datei vollständig neu erstellt, verwenden Sie -Fstattdessen.

1

tail -f überwacht das Dateiende, und wenn sich das Dateiende verschiebt, druckt es den neuen Inhalt und wartet, bis sich das Dateiende erneut bewegt. Mit anderen Worten, Änderungen in der Mitte des Dokuments werden von tail -f nicht gefunden, sondern nur angehängt.

0
fragileswan

Eigentlich ist die wahre Geschichte:

tail -f überwacht den Speicher, nicht die Festplatte. Sie kann jedoch nicht auf geschützten Speicher zugreifen, z. B. Änderungen an einer Datei, die einen Texteditor geöffnet hat.