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
Aby zobaczyć inną liczbę linii, użyj opcji -n (liczba linii):
tail -n 15 word-list.txt
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
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
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
Możesz przeglądaj tekst w kontrolowany sposób.
Ponieważ w tym pliku znajduje się 20 445 wierszy, to polecenie jest odpowiednikiem użycia opcji „-6”:
tail +20440 list-1.txt
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
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
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
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
To polecenie wyświetla pięć procesów najbardziej wymagających pamięci.
ps aux | sort -nk +4 | tail -5
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
Gdy każdy nowy wpis dziennika jest dodawany do pliku dziennika, tail aktualizuje swój widok 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
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
Każdy wpis jest oznaczony nagłówkiem, który pokazuje, z którego pliku pochodzi tekst.
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
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.
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
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.
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.