tail -f verfolgt keine Dateiänderungen

14

Ich habe kürzlich versucht tail -f, einige Textdateien wie folgt zu überwachen : tail -f /var/sometext.

Als ich einige Tests durchgeführt habe, scheint es jedoch nicht zu funktionieren. Ich habe eine neue Datei erstellt und ausgeführt: tail -f /home/name/textDann habe ich das Protokoll in vim geöffnet und einige Änderungen vorgenommen, es gespeichert, und es scheint, dass tail die Änderung nicht "sieht".

Das Seltsame ist, dass das Laufen gut echo "hello" >> /home/name/textzu funktionieren scheint (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 das jemand erklären? Ich habe nicht ganz verstanden, wie das tatsächlich funktioniert, aber ich habe eine Idee, was Dateideskriptoren sind.

Alex.K.
quelle

Antworten:

29

-ffolgt durch Inode. Wenn Sie dem Namen folgen möchten, z. B. wenn ein Programm die Datei vollständig neu erstellt, verwenden Sie -Fstattdessen.

Ignacio Vazquez-Abrams
quelle
Ordentlich, das habe ich nie gewusst. Es lohnt sich, die Manpages von Dienstprogrammen auch dann zu lesen (besonders?), Wenn Sie sie ständig verwenden!
Lyle
1

tail -f überwacht das Dateiende. Wenn sich das Dateiende verschiebt, wird der neue Inhalt gedruckt und darauf gewartet, dass das Dateiende erneut verschoben wird. Mit anderen Worten, Änderungen in der Mitte des Dokuments werden nicht durch tail -f gefunden, sondern nur durch Anhängen.


quelle
-1

Eigentlich ist die wahre Geschichte:

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

fragileswan
quelle
Der tail -fBefehl bearbeitet eine Datei (Dateideskriptor nach dem Öffnen der Datei). Obwohl sich die neuen Änderungen der Datei noch im Speicher befinden (Puffer, Cache), spielt dies keine Rolle. tailgreift weiterhin über den Dateideskriptor auf die Datei zu. Es spielt keine Rolle, wie die Datei geändert wird. --- Die Antwort von Ignacio Vazquez-Abrams ist richtig - der Editor ändert die aktuelle Datei (die geöffnet ist tail) nicht, sondern speichert die Änderungen in einer neuen Datei mit demselben Namen wie die alte.
Pabouk