Du brauchst tail --follow=name /var/log/syslog
Der Grund ist, dass standardmäßig - angeblich aus Leistungsgründen - tail
die angegebene Datei geöffnet wird und dann der Dateideskriptor, den er von diesem open(2)
Aufruf erhält, auf Änderungen überwacht wird . Dies funktioniert in Ordnung, solange die Datei geändert wird (angehängt oder sogar umgeschrieben wird (indem sie zuerst gekürzt wird)). Wenn die Datei ersetzt wird, funktioniert sie jedoch nicht mehr. Das heißt, sie wird entfernt und mit demselben Namen erstellt. Dies ist logrotate
normalerweise der Fall.
Der „Name“ -Modus der --follow
Marken tail
verwenden, um einen teurer stat(2)
syscall, die jedes Mal der Name der Datei über die Dateisystemebene „löst“ tatsächlich, und wenn tail
die Datei geändert bemerkt seine sogenannten „inode“, tail
wieder öffnet die Datei.
Die Ausgabe von man tail
:
-f, --follow[=]
Angehängte Daten ausgeben, wenn die Datei wächst; ein fehlendes Optionsargument bedeutet 'Deskriptor'
Sie können auch die -F
Befehlszeilenoption betrachten, die als definiert ist
-F
gleich wie--follow=name --retry