Wyświetl tylko nowe wpisy w rosnącym pliku dziennika

20
tail -f x.log

Używam tego polecenia, aby zobaczyć rosnący plik dziennika w wierszu polecenia.

Interesuje mnie tylko wyświetlanie wierszy dziennika, które są zapisywane do pliku po uruchomieniu tail -fi nie jestem zainteresowany dziennikami, które zostały zapisane do pliku przed wykonaniem tail -f. Ale tail -fpolecenie przy starcie, pobiera ostatnie 10 wierszy i wyświetla je.

To mnie dezorientuje, czasami jeśli te dzienniki są świeżo wygenerowane (lub) są starymi dziennikami?

Jak mogę dostosować tail -f, aby wyświetlać tylko nowe wpisy?


źródło

Odpowiedzi:

31

Możesz spróbować:

tail -n0 -f x.log

Ze strony podręcznika :

-n, --lines = K wypisuje
ostatnie K wierszy zamiast ostatnich 10; lub użyj -n + K, aby wypisać linie zaczynające się od Kth

taliezin
źródło
12

Możesz użyć tej -n0opcji, aby wyświetlić 0 linii. Więc

tail -n0 -f some.log
fredtantini
źródło
2

Możesz także użyć lesspolecenia like

  1. less file_name.log (plik dziennika zostanie otwarty i wyświetli pierwszą stronę pliku dziennika)
  2. naciśnij shift+ f(aby postępować tak samo jak tail-f)
  3. W przypadku, gdy musisz wyszukać jakieś słowo kluczowe w pliku dziennika. naciśnij ctrl+, caby wyjść z trybu ogona i wyszukać słowo kluczowe jako /słowo kluczowe i ?słowo kluczowe.
Ragu Rathish
źródło
Nie wyświetla to tylko nowych wpisów w rosnącym pliku dziennika.
Spooky
0

Stworzyłem to podejście, gdy musiałem monitorować wpisy w kontenerze dokera:

LOG_COUNT=0
LOGS=/var/logs/your_logs

function HEART_BEAT() {
    LOG_COUNT_NEW=$(wc -l $LOGS | awk '{ print $1 }')
    tail -n $(( $LOG_COUNT_NEW - $LOG_COUNT )) $LOGS
    LOG_COUNT=$LOG_COUNT_NEW
}

Mam nadzieję że to pomoże!

Number16BusShelter
źródło