Zakończenie ogona -f po wydrukowaniu n linii


10

Mam następujące.

  1. Proces Java zapisujący loguje się do pliku
  2. Skrypt powłoki uruchamiający proces Java.

Muszę przeczytać plik dziennika po uruchomieniu procesu Java, aby sprawdzić poprawne uruchomienie.

Próbowałem, tail -fale pozostanie dołączony na zawsze. Potrzebuję tailprzestać po wydrukowaniu n linii. Istnieje sposób na -nopcję dla poprzednich linii?


1
Czy plik dziennika jest czyszczony za każdym razem, gdy skrypt powłoki uruchomi proces Java?
c0rp

Używam log4j w trybie dołączania do pisania pliku dziennika. Obraca się, gdy rozmiar pliku wzrośnie do 10 MB.
theShadow89

Odpowiedzi:


24

Możesz przesłać dane wyjściowe do tail -fdo, headaby ograniczyć liczbę wyświetlanych linii:

tail -f [PATH] | head -n 100

aby wyświetlić w sumie tylko 100 linii.


7

Tylko nowe linie

W przypadku zwykłego tail -fpierwsze 10 wierszy pochodzi z pliku, ponieważ już istnieje:

tail -f file.log | head -30

zapisuje 10 linii log.txtpo uruchomieniu i 20 (n-10) linii, które są dodawane później.

W przypadku pliku dziennika zwykle używasz -f( --follow), aby zobaczyć wiersze zapisane w przyszłości.

Aby zobaczyć tylko 30 wierszy, w których zapisano później tail, ogranicz początkowe wyjście do 0:

tail -f -n0 file.log | head -30
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.