Cum să utilizați comanda tail pe Linux

Comanda Linux tail afișează date de la sfârșitul unui fișier. Poate afișa chiar și actualizările care sunt adăugate unui fișier în timp real. Vă arătăm cum să-l utilizați.

Systemd a ucis coada?

Comanda tail vă arată date de la sfârșitul unui fișier. De obicei, date noi sunt adăugate la sfârșitul unui fișier, astfel încât comanda tail este o modalitate rapidă și ușoară de a vedea cele mai recente adăugări la un fișier. De asemenea, poate monitoriza un fișier și poate afișa fiecare nouă intrare de text în acel fișier pe măsură ce apar. Acest lucru îl face un instrument excelent pentru a monitoriza fișierele jurnal.

Multe distribuții Linux moderne au adoptat sistemul systemd și managerul de servicii. Acesta este primul proces executat, are ID proces 1, și este părintele tuturor celorlalte procese. Acest rol era înainte se ocupă de cei mai în vârstă sistem init.

Odată cu această modificare a apărut un nou format pentru fișierele jurnal de sistem. Nu mai sunt create în text simplu, sub systemd sunt înregistrate în format binar. La citiți aceste fișiere jurnal, trebuie să le utilizați utilitatea journal. Comanda tail funcționează cu formate de text simplu. Nu citește fișiere binare. Deci asta înseamnă că comanda tail este o soluție în căutarea unei probleme? Mai are ceva de oferit?

Există mai mult la comanda tail decât afișarea actualizărilor în timp real. Și, de altfel, există încă o mulțime de fișiere jurnal care nu sunt generate de sistem și sunt încă create ca fișiere text simplu. De exemplu, fișierele jurnal generate de aplicații nu și-au schimbat formatul.

  eroare de format exec” în Linux

Folosind coada

Treceți numele unui fișier la coadă și vă va afișa ultimele zece rânduri din acel fișier. Exemplele de fișiere pe care le folosim conțin liste de cuvinte sortate. Fiecare linie este numerotată, așa că ar trebui să fie ușor să urmați exemplele și să vedeți ce efect au diferitele opțiuni.

tail word-list.txt

Pentru a vedea un număr diferit de linii, utilizați opțiunea -n (număr de linii):

tail -n 15 word-list.txt

De fapt, poți să renunți la „-n” și să folosești doar o cratimă „-” și numărul. Asigurați-vă că nu există spații între ele. Tehnic, acesta este un formular de comandă învechit, dar este încă în pagina de manual, și încă funcționează.

tail -12 word-list.txt

Utilizarea cozii cu fișiere multiple

Puteți avea o lucrare finală cu mai multe fișiere simultan. Doar treceți numele fișierelor pe linia de comandă:

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

Un antet mic este afișat pentru fiecare fișier, astfel încât să știți cărui fișier aparțin liniile.

Afișarea liniilor de la începutul unui fișier

Modificatorul + (număr de la început) face ca liniile de afișare de la începutul unui fișier, începând cu un anumit număr de linie. Dacă fișierul este foarte lung și alegeți o linie aproape de începutul fișierului, veți primi o mulțime de rezultate trimise în fereastra terminalului. Dacă acesta este cazul, este logic să conductați ieșirea din coadă în mai puțin.

tail +440 list-1.txt

Puteți parcurgeți textul într-un mod controlat.

Deoarece se întâmplă să fie 20.445 de linii în acest fișier, această comandă este echivalentul utilizării opțiunii „-6”:

tail +20440 list-1.txt

Utilizarea octeților cu coadă

Puteți spune cozii să folosească decalaje în octeți în loc de linii folosind opțiunea -c (octeți). Acest lucru ar putea fi util dacă aveți un fișier de text care a fost formatat în înregistrări de dimensiune normală. Rețineți că un caracter newline contează ca un octet. Această comandă va afișa ultimii 93 de octeți din fișier:

tail -c 93 list-2.txt

Puteți combina opțiunea -c (octeți) cu modificatorul + (număr de la începutul fișierului) și să specificați un offset în octeți numărați de la începutul fișierului:

tail -c +351053 list-e.txt

Țevi în coadă

Mai devreme, am distribuit ieșirea de la coadă în less . Putem, de asemenea, direcționa ieșirea de la alte comenzi în tail.

  Cum să vă găsiți adresa IP pe Linux

Pentru a identifica cele cinci fișiere sau foldere cu cele mai vechi timpi de modificare, utilizați opțiunea -t (sortare după timp de modificare) cu ls și direcționați rezultatul în tail.

ls -tl | tail -5

Comanda capului listează linii de text de la începutul unui fișier. Putem combina acest lucru cu tail pentru a extrage o secțiune a fișierului. Aici, folosim comanda head pentru a extrage primele 200 de linii dintr-un fișier. Acesta este introdus în coadă, care extrage ultimele zece linii. Acest lucru ne oferă liniile 191 până la linia 200. Adică ultimele zece linii din primele 200 de linii:

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

Această comandă listează cele cinci procese cele mai consumate de memorie.

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

Să descompun asta.

Comanda ps afișează informații despre procesele care rulează. Opțiunile folosite sunt:

a: Listați toate procesele, nu doar pentru utilizatorul curent.
u: Afișează o ieșire orientată către utilizator.
x: Listați toate procesele, inclusiv cele care nu rulează într-un TTY.

Comanda sortare sortează ieșirea de la ps. Opțiunile pe care le folosim cu sortare sunt:

n: Sortați numeric.
k +4: Sortați pe a patra coloană.

Comanda tail -5 afișează ultimele cinci procese din rezultatul sortat. Acestea sunt cele cinci procese cele mai amanate de memorie.

Folosind tail pentru a urmări fișierele în timp real

Urmărirea noilor intrări de text care sosesc într-un fișier – de obicei un fișier jurnal – este ușoară cu tail. Treceți numele fișierului pe linia de comandă și utilizați opțiunea -f (urmăriți).

tail -f geek-1.log

Pe măsură ce fiecare intrare nouă de jurnal este adăugată la fișierul jurnal, tail își actualizează afișarea în fereastra terminalului.

  Cele mai bune 5 înregistratoare de ecran pentru Linux

Puteți rafina rezultatul pentru a include numai linii de relevanță sau interes special. Aici, folosim grep pentru arată doar liniile care includ cuvântul „medie”:

tail -f geek-1.log | grep average

Pentru a urmări modificările la două sau mai multe fișiere, transmiteți numele fișierelor pe linia de comandă:

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

Fiecare intrare este etichetată cu un antet care arată din ce fișier provine textul.

Afișajul este actualizat de fiecare dată când apare o nouă intrare într-un fișier urmărit. Pentru a specifica perioada de actualizare, utilizați opțiunea -s (perioada de repaus). Acest lucru îi spune lui tail să aștepte un număr de secunde, cinci în acest exemplu, între verificările fișierelor.

tail -f -s 5 geek-1.log

Desigur, nu vă puteți da seama uitându-vă la o captură de ecran, dar actualizările fișierului au loc o dată la două secunde. Noile intrări de fișiere sunt afișate în fereastra terminalului o dată la cinci secunde.

Când urmăriți adăugările de text la mai multe fișiere, puteți suprima antetele care indică din ce fișier jurnal provine textul. Utilizați opțiunea -q (liniștită) pentru a face acest lucru:

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

Ieșirea din fișiere este afișată într-un amestec perfect de text. Nu există nicio indicație din ce fișier jurnal provine fiecare intrare.

coada mai are valoare

Deși accesul la fișierele jurnal de sistem este acum oferit de journalctl, tail are încă multe de oferit. Acest lucru este valabil mai ales atunci când este folosit împreună cu alte comenzi, prin introducerea în sau din coadă.

systemd ar fi putut schimba peisajul, dar există încă un loc pentru utilitățile tradiționale care se conformează filozofiei Unix de a face un lucru și de a-l face bine.