Jak korzystać z polecenia tail w systemie Linux

Polecenie ogon Linuksa wyświetla dane z końca pliku. Może nawet wyświetlać aktualizacje, które są dodawane do pliku w czasie rzeczywistym. Pokażemy Ci, jak z niego korzystać.

Czy systemd zabił ogon?

Polecenie tail pokazuje dane z końca pliku. Zwykle nowe dane są dodawane na końcu pliku, więc polecenie tail jest szybkim i łatwym sposobem na wyświetlenie najnowszych dodatków do pliku. Może również monitorować plik i wyświetlać każdy nowy wpis tekstowy do tego pliku, gdy tylko się pojawią. To sprawia, że ​​jest to doskonałe narzędzie do monitorowania plików dziennika.

Wiele nowoczesnych dystrybucji Linuksa przyjęło system systemd i menedżera usług. Jest to pierwszy wykonany proces identyfikator procesu 1i jest rodzicem wszystkich innych procesów. Ta rola była kiedyś obsługiwane przez starszych init system.

Wraz z tą zmianą pojawił się nowy format plików dziennika systemowego. Nie są już tworzone w postaci zwykłego tekstu, pod systemd są zapisywane w formacie binarnym. Do przeczytaj te pliki dziennika, musisz użyć narzędzie journactl. Polecenie tail działa z formatami zwykłego tekstu. Nie czyta plików binarnych. Czy to oznacza, że ​​polecenie tail jest rozwiązaniem w poszukiwaniu problemu? Czy nadal ma coś do zaoferowania?

Polecenie tail to coś więcej niż wyświetlanie aktualizacji w czasie rzeczywistym. A jeśli chodzi o to, nadal istnieje wiele plików dziennika, które nie są generowane przez system i nadal są tworzone jako zwykłe pliki tekstowe. Na przykład pliki dziennika generowane przez aplikacje nie zmieniły swojego formatu.

Za pomocą ogona

Przekaż nazwę pliku do końca, a pokaże ci ostatnie dziesięć wierszy z tego pliku. Przykładowe pliki, których używamy, zawierają listy posortowanych słów. Każda linia jest ponumerowana, więc powinno być łatwo prześledzić przykłady i zobaczyć, jaki wpływ mają poszczególne opcje.

tail word-list.txt

tail word-list.txt w oknie terminala

Aby zobaczyć inną liczbę linii, użyj opcji -n (liczba linii):

tail -n 15 word-list.txt

tail -n 15 word-list.txt w oknie terminala

Właściwie można zrezygnować z „-n” i po prostu użyć łącznika „-” i liczby. Upewnij się, że między nimi nie ma spacji. Technicznie, to jest przestarzały formularz polecenia, ale nadal jest w strona podręcznikai nadal działa.

tail -12 word-list.txt

tail -12 lista-słów.txt w oknie terminala

Używanie ogona z wieloma plikami

Możesz pracować z wieloma plikami naraz. Po prostu podaj nazwy plików w linii poleceń:

tail -n 4 list-1.txt list-2.txt list-3.txt

tail -n 4 list-1.txt list-2.txt list-3.txt w oknie terminala

Dla każdego pliku wyświetlany jest mały nagłówek, abyś wiedział, do którego pliku należą linie.

Wyświetlanie wierszy od początku pliku

Modyfikator + (count from the start) sprawia, że ​​końcowe linie wyświetlają się od początku pliku, zaczynając od określonego numeru linii. Jeśli twój plik jest bardzo długi i wybierzesz linię blisko początku pliku, otrzymasz dużo danych wyjściowych wysłanych do okna terminala. Jeśli tak jest, sensowne jest przekierowanie wyjścia z ogona na mniej.

tail +440 list-1.txt

tail +44 list-1.txt w oknie terminala

Możesz przeglądaj tekst w kontrolowany sposób.

Dane wyjściowe z tail wyświetlane w less w oknie terminala

Ponieważ w tym pliku znajduje się 20 445 wierszy, to polecenie jest odpowiednikiem użycia opcji „-6”:

tail +20440 list-1.txt

tail +20440 list-1.txt w oknie terminala

Używanie bajtów z ogonem

Możesz powiedzieć tailowi, aby używał przesunięć w bajtach zamiast w wierszach, używając opcji -c (bajty). Może to być przydatne, jeśli masz plik tekstowy sformatowany w rekordy o normalnej wielkości. Zauważ, że znak nowego wiersza liczy się jako jeden bajt. To polecenie wyświetli ostatnie 93 bajty w pliku:

tail -c 93 list-2.txt

tail -c 93 list-2.txt w oknie terminala

Możesz połączyć opcję -c (bajty) z modyfikatorem + (licząc od początku pliku) i określić przesunięcie w bajtach liczone od początku pliku:

tail -c +351053 list-e.txt

tail -c +351053 list-e.txt w oknie terminala

Wąż w ogon

Wcześniej przesyłaliśmy wyjście z ogona na mniej. Możemy również przesłać dane wyjściowe z innych poleceń do tail.

Aby zidentyfikować pięć plików lub folderów z najstarszymi czasami modyfikacji, użyj opcji -t (sortuj według czasu modyfikacji) z ls i potokuj wyjście do końca.

ls -tl | tail -5

ls -lt |  tail -5 w oknie terminala

Dowództwo wyświetla linie tekstu od początku pliku. Możemy to połączyć z tailem, aby wyodrębnić część pliku. Tutaj używamy polecenia head, aby wyodrębnić pierwsze 200 wierszy z pliku. To jest podłączane do ogona, który wyciąga ostatnie dziesięć lin. To daje nam wiersze od 191 do 200. To znaczy ostatnie dziesięć wierszy z pierwszych 200 wierszy:

head -n 200 list-1.txt | tail -10

head -n 200 list-1.txt |  tail -10 w oknie terminala

To polecenie wyświetla pięć procesów najbardziej wymagających pamięci.

ps aux | sort -nk +4 | tail -5

ps aux |  sort -nk +4 |  tail -5 w oknie terminala

Rozbijmy to.

Polecenie ps wyświetla informacje o uruchomionych procesach. Zastosowane opcje to:

a: Wymień wszystkie procesy, nie tylko dla bieżącego użytkownika.
u: Wyświetla wyjście zorientowane na użytkownika.
x: Wyświetla wszystkie procesy, w tym te, które nie działają w urządzeniu TTY.

Polecenie sortowania sortuje dane wyjściowe z ps. Opcje, których używamy z sortowaniem to:

n: Sortuj numerycznie.
k +4: Sortuj według czwartej kolumny.

Polecenie tail -5 wyświetla ostatnie pięć procesów z posortowanego wyniku. Oto pięć procesów najbardziej wymagających pamięci.

Używanie tail do śledzenia plików w czasie rzeczywistym

Śledzenie nowych wpisów tekstowych docierających do pliku – zazwyczaj jest to plik dziennika – jest bardzo łatwe. Podaj nazwę pliku w linii poleceń i użyj opcji -f (follow).

tail -f geek-1.log

tail -f geek-1.log w oknie terminala

Gdy każdy nowy wpis dziennika jest dodawany do pliku dziennika, tail aktualizuje swój widok w oknie terminala.

Wyjście z tail -f geek-1.log w oknie terminala

Możesz zawęzić wynik, aby zawierał tylko wiersze o szczególnym znaczeniu lub zainteresowaniu. Tutaj używamy grep do pokaż tylko wiersze zawierające słowo „średnia”:

tail -f geek-1.log | grep average

tail -f geek-1.log |  grep średnia w oknie terminala

Aby śledzić zmiany w dwóch lub więcej plikach, podaj nazwy plików w wierszu poleceń:

tail -f -n 5 geek-1.log geek-2.log

tail -f -n 5 geek-1.log geek-2.log w oknie terminala

Każdy wpis jest oznaczony nagłówkiem, który pokazuje, z którego pliku pochodzi tekst.

Dane wyjściowe z tail -f -n 5 geek-1.log geek-2.log

Ekran jest aktualizowany za każdym razem, gdy pojawia się nowy wpis w śledzonym pliku. Aby określić okres aktualizacji, użyj opcji -s (okres uśpienia). To nakazuje tailowi ​​odczekać określoną liczbę sekund, w tym przykładzie pięć, pomiędzy sprawdzeniami plików.

tail -f -s 5 geek-1.log

tail -f -s 5 geek-1.log w oknie terminala

Wprawdzie nie można tego stwierdzić, patrząc na zrzut ekranu, ale aktualizacje pliku odbywają się co dwie sekundy. Nowe wpisy plików są wyświetlane w oknie terminala co pięć sekund.

Dane wyjściowe z tail -f -s 5 geek-1.log

Jeśli śledzisz dodatki tekstowe do więcej niż jednego pliku, możesz pominąć nagłówki wskazujące, z którego pliku dziennika pochodzi tekst. Aby to zrobić, użyj opcji -q (cicho):

tail -f -q geek-1.log geek-2.log

tail -f -q geek-1.log geek-2.log w oknie terminala

Dane wyjściowe z plików są wyświetlane jako płynne połączenie tekstu. Nie ma wskazania, z którego pliku dziennika pochodzi każdy wpis.

Dane wyjściowe z tail -f -q geek-1.log geek-2.log w oknie terminala

ogon wciąż ma wartość

Chociaż dostęp do plików dziennika systemowego zapewnia teraz journalctl, tail wciąż ma wiele do zaoferowania. Jest to szczególnie prawdziwe, gdy jest używane w połączeniu z innymi poleceniami, przez podłączenie rurki do lub z ogona.

systemd mógł zmienić krajobraz, ale wciąż jest miejsce dla tradycyjnych narzędzi, które są zgodne z filozofią Uniksa, by robić jedną rzecz i robić to dobrze.