Jak zrobić „tail -f” logów obróconych plików?

106

W długo działającym systemie zwykle mam terminal

$ tail -f /var/log/kern.log

lub coś takiego otwarte.

Ale od czasu do czasu muszę ponownie uruchomić takie polecenie, ponieważ nie są już wyświetlane żadne nowe wiadomości.

Zakładam, że dzieje się tak z powodu zadania rotacji dziennika, które zastąpiło plik dziennika, tail -fktóry „oglądał”.

Jak mogę uniknąć problemów z ponownym uruchomieniem?

Czy mogę przywoływać w tailtaki sposób, aby dostrzegał proces rotacji i czy działał prawidłowo?

(Zauważam ten problem w systemie Ubuntu 11.04, który używa rsyslogddomyślnie.)

maxschlepzig
źródło
2
Powiązane: unix.stackexchange.com/questions/196168/…
Volker Siegel

Odpowiedzi:

162

-FZamiast tego użyj opcji:

tail -F /var/log/kern.log

-FOpcja mówi taildo śledzenia zmian w pliku nazwa_pliku, zamiast przy użyciu numeru węzła, który zmienia się w trakcie obracania. Będzie również próbował otworzyć plik, jeśli go nie ma.

andcoz
źródło
7
Wspaniale, tak, jestem. (tylko dla przypomnienia, jest to opcja ogona GNU - gdzie ogon GNU jest oczywiście domyślny w Ubuntu).
maxschlepzig
Masz rację: - / Nie zauważyłem, że Ubuntu w twoim pytaniu było tylko przykładem.
andcoz
wcale nie jest problemem - właśnie skomentowałem dla kompletności (czasami chcę tylko sprawdzić, co jest POSIX, a co nie). Pytanie dotyczyło właściwie Ubuntu.
maxschlepzig
1
Jest tail -F /var/log/kern.logrównoważne tail -f --follow=name --retry /var/log/kern.log?
Basj
1
@Basj - według man7.org/linux/man-pages/man1/tail.1.html to odpowiednik
andrej