Porady Admina: tail
Ostatnia aktualizacja: 14 września 2023, 22:56
W sześćdziesiątym wpisie z cyklu Porady Admina zajmiemy się programem tail.
Polecenia tail jest uzupełnieniem polecenia head i jak sama nazwa wskazuje, wypisuje ostatnie N danych z podanego wejścia. Domyślnie drukuje ostatnie 10 wierszy określonych plików. Jeśli podano więcej niż jedną nazwę pliku, dane z każdego pliku są poprzedzone nazwą pliku.
Składnia
tail OPCJA PLIK
Jeżeli nie został podany PLIK albo podany jest jako -, czytane jest standardowe wejście.
Opcje
Argumenty obowiązkowe dla opcji długich obowiązują również dla krótkich.
-c, –bytes=ILE : wypisanie ostatnich N bajtów; albo użyj -c +ILE aby wypisać od bajtu numer ILE z każdego z plików
-f, –follow[={name|descriptor}] : wypisywanie nowych danych kiedy plik rośnie; brakujący argument oznacza „descriptor”
-F : to samo co –follow=name –retry
-n, –lines=ILE : wypisanie ostatnich ILE linii zamiast ostatnich 10; albo użyj -n +ILE dla wypisania linii od linii numer ILE
–max-unchanged-stats=N : z –follow=name powoduje ponowne otwieranie PLIKU, który nie zmienił rozmiaru po N (domyślnie 5) iteracjach, dla sprawdzenia czy został usunięty albo przemianowany (częsty przypadek dla logów); ta opcja jest rzadko przydatna jeżeli dostępne jest inotify
–pid=PID : z -f – zakończenie pracy po zakończeniu procesu o numerze PID
-q, –quiet, –silent : bez wypisywania nagłówków z nazwami plików
–retry : stałe ponawianie próby otwierania pliku, nawet jeżeli jest niedostępny
-s, –sleep-interval=N : z -f – odczekanie po N sekund (domyślnie 1,0 s) między iteracjami; z inotify i –pid=P – sprawdzanie procesu P co najmniej co N sekund
-v, –verbose : wypisywanie zawsze nagłówków z nazwami plików
-z, –zero-terminated : separatorem linii jest znak NUL, nie znak nowej linii
Program tail jest częścią pakietu coreutils.
Przykłady
Plikiem, na którym będziemy pracować będzie moj.txt
cat moj.txt
To jest plik testowy
Druga linia tekstu testowego
Kolejny wiersz mojego pliku
Coś tam
Jeszcze więcej
kdjdhf dkdjdhd
oooeudh
osiem
przedostatnia może linia
dziesiąta linia tego pliku
Dodatkowa 11
12 linia do kompletu
Standardowe wyjście po użyciu tail jest 10 ostatnich linii:
tail moj.txt
Kolejny wiersz mojego pliku
Coś tam
Jeszcze więcej
kdjdhf dkdjdhd
oooeudh
osiem
przedostatnia może linia
dziesiąta linia tego pliku
Dodatkowa 11
12 linia do kompletu
Opcja -n drukuje podaną ilość ostatnich wierszy; można ją też użyć bez „n”
tail -n 3 moj.txt
tail -3 moj.txt
dziesiąta linia tego pliku
Dodatkowa 11
12 linia do kompletu
Tail zawiera również opcję „+”, której nie ma w poleceniu head. Z tą opcją komenda tail wypisuje dane zaczynając od podanego numeru linii pliku zamiast końca. Dla polecenia: tail +n nazwa_pliku, drukowanie danych rozpocznie się od linii o numerze „n” do końca podanego pliku.
tail +11 moj.txt
Dodatkowa 11
12 linia do kompletu
Opcja -c liczba drukuje ostatnią „liczbę” bajtów z określonego pliku. Nowa linia liczy się jako pojedynczy znak, więc jeśli tail wypisze nową linię, policzy ją jako bajt.
tail -c 10 moj.txt
Opcja -q jest używana, jeśli podano więcej niż 1 plik. Dzięki temu poleceniu dane z każdego pliku nie są poprzedzone nazwą pliku.
tail -q moj.txt moj2.txt
Opcja -f jest używana głównie przez administratora systemu do monitorowania wzrostu plików dziennika zapisywanych przez wiele programów uniksowych podczas ich działania. Ta opcja pokazuje dziesięć ostatnich wierszy pliku i aktualizuje się po dodaniu nowych wierszy. W miarę zapisywania nowych wierszy w dzienniku konsola będzie aktualizować nowe wiersze. Monit nie powraca nawet po zakończeniu pracy, więc musimy użyć klawisza przerwania, aby przerwać to polecenie.
tail -f plik.log
Więcej informacji o programie tail uzyskasz poleceniami:
man tail
tail --help