Jak používat příkaz tail na Linuxu

Příkaz Linux tail zobrazuje data z konce souboru. Může dokonce zobrazit aktualizace, které jsou přidány do souboru v reálném čase. Ukážeme vám, jak jej používat.

Systemd Kill tail?

Příkaz tail vám zobrazí data z konce souboru. Nová data se obvykle přidávají na konec souboru, takže příkaz tail představuje rychlý a snadný způsob, jak zobrazit nejnovější přírůstky do souboru. Může také monitorovat soubor a zobrazovat každou novou textovou položku do tohoto souboru, jakmile se objeví. Díky tomu je skvělým nástrojem pro sledování souborů protokolu.

Mnoho moderních distribucí Linuxu přijalo správce systému a služeb systemd. Toto je první provedený proces ID procesu 1a je rodičem všech ostatních procesů. Tato role bývala zpracovává starší init systém.

Spolu s touto změnou přišel nový formát souborů systémových protokolů. Již nejsou vytvářeny v prostém textu, pod systemd jsou zaznamenány v binárním formátu. Na přečtěte si tyto soubory protokolu, musíte použít obslužný program journalactl. Příkaz tail pracuje s formáty prostého textu. Nečte binární soubory. Znamená to tedy, že příkaz ocas je řešením při hledání problému? Má ještě co nabídnout?

Příkaz ocasu obsahuje více než jen zobrazování aktualizací v reálném čase. A když na to přijde, stále existuje spousta souborů protokolu, které nejsou generované systémem a jsou stále vytvářeny jako soubory ve formátu prostého textu. Například soubory protokolu generované aplikacemi nezměnily svůj formát.

Pomocí ocasu

Předejte název souboru na konec a zobrazí se posledních deset řádků z tohoto souboru. Vzorové soubory, které používáme, obsahují seznamy setříděných slov. Každý řádek je očíslován, takže by mělo být snadné sledovat příklady a zjistit, jaký účinek mají různé možnosti.

tail word-list.txt

Chcete-li zobrazit jiný počet řádků, použijte volbu -n (počet řádků):

tail -n 15 word-list.txt

Ve skutečnosti se můžete obejít bez „-n“ a stačí použít pomlčku „-“ a číslo. Ujistěte se, že mezi nimi nejsou žádné mezery. technicky vzato toto je zastaralý příkazový formulář, ale stále je v manuálová stránka, a stále to funguje.

tail -12 word-list.txt

Použití ocasu s více soubory

Můžete pracovat s ocasem s více soubory najednou. Stačí zadat názvy souborů na příkazovém řádku:

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

U každého souboru je zobrazeno malé záhlaví, abyste věděli, ke kterému souboru řádky patří.

Zobrazení řádků od začátku souboru

Modifikátor + (počet od začátku) způsobí, že konce souboru budou zobrazovat řádky od začátku souboru, které začínají na konkrétním čísle řádku. Pokud je váš soubor velmi dlouhý a vyberete řádek blízko začátku souboru, dostanete velké množství výstupu odeslaného do okna terminálu. Pokud je tomu tak, má smysl zavádět výstup z ocasu do méně.

tail +440 list-1.txt

Můžeš procházet text kontrolovaným způsobem.

Protože tento soubor obsahuje 20 445 řádků, je tento příkaz ekvivalentem použití volby „-6“:

tail +20440 list-1.txt

Použití bajtů s ocasem

Pomocí volby -c (bajty) můžete říct tailu, aby používal offsety v bajtech místo řádků. To může být užitečné, pokud máte soubor textu, který byl naformátován na záznamy běžné velikosti. Všimněte si, že znak nového řádku se počítá jako jeden bajt. Tento příkaz zobrazí posledních 93 bajtů v souboru:

tail -c 93 list-2.txt

Můžete kombinovat volbu -c (bajty) s modifikátorem + (počet od začátku souboru) a zadat posun v bajtech počítaný od začátku souboru:

tail -c +351053 list-e.txt

Potrubí do ocasu

Dříve jsme vedli výstup z ocasu do méně . Můžeme také převést výstup z jiných příkazů do ocasu.

Chcete-li identifikovat pět souborů nebo složek s nejstaršími časy úprav, použijte volbu -t (seřadit podle času úpravy) s ls a výstup převeďte do tail.

ls -tl | tail -5

Příkaz hlavy vypíše řádky textu od začátku souboru. Můžeme to zkombinovat s ocasem a extrahovat část souboru. Zde používáme příkaz head k extrahování prvních 200 řádků ze souboru. To se vede potrubím do ocasu, který vytahuje posledních deset řádků. To nám dává řádky 191 až 200. To znamená posledních deset řádků z prvních 200 řádků:

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

Tento příkaz uvádí pět procesů nejvíce náročných na paměť.

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

Pojďme to rozebrat.

Příkaz ps zobrazuje informace o běžících procesech. Použité možnosti jsou:

a: Seznam všech procesů, nejen pro aktuálního uživatele.
u: Zobrazí uživatelsky orientovaný výstup.
x: Seznam všech procesů, včetně těch, které neběží uvnitř TTY.

Příkaz řazení třídí výstup od ps. Možnosti, které používáme s řazením, jsou:

n: Seřadit číselně.
k +4: Řazení podle čtvrtého sloupce.

Příkaz tail -5 zobrazí posledních pět procesů ze seřazeného výstupu. Toto je pět procesů, které jsou nejvíce náročné na paměť.

Použití ocasu ke sledování souborů v reálném čase

Sledování nových textových položek přicházejících do souboru – obvykle souboru protokolu – je snadné pomocí tail. Předejte název souboru na příkazovém řádku a použijte volbu -f (následovat).

tail -f geek-1.log

Jakmile je do souboru protokolu přidána každá nová položka protokolu, aktualizuje tail své zobrazení v okně terminálu.

Výstup můžete upřesnit tak, aby zahrnoval pouze řádky zvláštní důležitosti nebo zájmu. Zde používáme grep to zobrazit pouze řádky, které obsahují slovo „průměr“:

tail -f geek-1.log | grep average

Chcete-li sledovat změny dvou nebo více souborů, předejte názvy souborů na příkazovém řádku:

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

Každý záznam je označen záhlavím, které ukazuje, ze kterého souboru text pochází.

Zobrazení se aktualizuje pokaždé, když do sledovaného souboru přijde nový záznam. Chcete-li zadat období aktualizace, použijte volbu -s (doba spánku). To říká tailu, aby mezi kontrolami souborů počkal několik sekund, v tomto příkladu pět.

tail -f -s 5 geek-1.log

Je pravda, že to nepoznáte podle snímku obrazovky, ale aktualizace souboru probíhají jednou za dvě sekundy. Nové položky souboru se zobrazují v okně terminálu každých pět sekund.

Když sledujete přidání textu do více než jednoho souboru, můžete potlačit záhlaví, která označují, ze kterého souboru protokolu text pochází. K tomu použijte volbu -q (tichý):

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

Výstup ze souborů se zobrazí v hladkém prolnutí textu. Neexistuje žádný údaj, ze kterého souboru protokolu každá položka pocházela.

ocas má stále hodnotu

Ačkoli přístup k souborům systémových protokolů nyní poskytuje journalctl, tail má stále co nabídnout. To platí zejména tehdy, když se používá ve spojení s jinými povely, pomocí potrubí do nebo z ocasu.

systemd mohl změnit prostředí, ale stále je tu místo pro tradiční nástroje, které odpovídají filozofii Unixu dělat jednu věc a dělat to dobře.