Potrzebujesz tail --follow=name /var/log/syslog
Powodem jest to, że domyślnie - prawdopodobnie ze względu na wydajność - tail
otwiera określony plik, a następnie obserwuje deskryptor pliku uzyskuje
z tego open(2)
wezwać do zmian.
Działa to dobrze, dopóki plik zostanie zmieniony - dołączony lub nawet przepisany (przez obcięcie go w pierwszej kolejności), ale przestaje działać, jeśli plik jest zastąpiony —To jest, usunięte i stworzone pod tą samą nazwą, i to jest to logrotate
zazwyczaj tak.
Tryb „nazwa” --follow
sprawia tail
używać bardziej kosztownego stat(2)
syscall, który faktycznie „rozwiązuje” nazwę pliku za każdym razem za pomocą warstwy systemu plików i jeśli tail
zauważa, że plik zmienił swój tzw „i-węzeł” , tail
ponownie otwiera plik.
Wyjście z man tail
:
-f, --follow[={name|descriptor}]
wyprowadzaj dołączone dane, gdy plik rośnie;
nieobecny argument opcji oznacza „deskryptor”
Możesz także spojrzeć na -F
opcja wiersza polecenia, która jest zdefiniowana jako
-F
taki sam jak --follow=name --retry