Obserwuj (obracaj) ekran logowania

0

Używam serwera poczty, z którym łączę się za pomocą SSH. Mój .bash_profile jest skonfigurowany do dołączania sesji SSH do pewnego screen sesja.

Teraz chciałbym, aby dziennik (np. Syslog) był drukowany w jednym oknie tej sesji ekranu. Próbowałem biegać

tail -f /var/log/syslog

ale wyjście zatrzymuje się codziennie o 6:25. Domyślam się, że to jest czas, kiedy dziennik się obraca. Czy jest więc sposób na wydrukowanie logu na ekranie?

tr01
źródło

Odpowiedzi:

1

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

kostix
źródło
0

Twoje przypuszczenie jest właściwie poprawne. W tym czasie syslog przerywa zapisywanie w dzienniku, tworzy z niego gz i ponownie uruchamia log.

Możesz spróbować

tail -f --retry /var/log/syslog

W ten sposób ogon powinien ponowić próbę ponownego otwarcia pliku po wykonaniu obrotu logu

favarofe
źródło