Hvordan bruke halekommandoen på Linux

Linux tail-kommandoen viser data fra slutten av en fil. Den kan til og med vise oppdateringer som er lagt til en fil i sanntid. Vi viser deg hvordan du bruker den.

Har systemet drept halen?

Halekommandoen viser deg data fra slutten av en fil. Vanligvis legges nye data til på slutten av en fil, så hale-kommandoen er en rask og enkel måte å se de siste tilleggene til en fil. Den kan også overvåke en fil og vise hver ny tekstoppføring til den filen etter hvert som de oppstår. Dette gjør det til et flott verktøy for å overvåke loggfiler.

Mange moderne Linux-distribusjoner har tatt i bruk systemd system og service manager. Dette er den første prosessen som er utført, den har prosess-ID 1, og det er overordnet for alle andre prosesser. Denne rollen pleide å være håndtert av de eldre init system.

Sammen med denne endringen kom et nytt format for systemloggfiler. Ikke lenger opprettet i ren tekst, under systemd blir de registrert i binært format. Til lese disse loggfilene, må du bruke journactl-verktøyet. Halekommandoen fungerer med rene tekstformater. Den leser ikke binære filer. Så betyr dette at halekommandoen er en løsning på jakt etter et problem? Har den fortsatt noe å tilby?

Det er mer med halekommandoen enn å vise oppdateringer i sanntid. Og for den saks skyld er det fortsatt mange loggfiler som ikke er systemgenerert og som fortsatt er opprettet som vanlige tekstfiler. For eksempel har loggfiler generert av applikasjoner ikke endret format.

  Hvordan spille Trine Enchanted Edition på Linux

Ved hjelp av hale

Send navnet på en fil til hale, og den vil vise deg de ti siste linjene fra den filen. Eksempelfilene vi bruker inneholder lister med sorterte ord. Hver linje er nummerert, så det skal være enkelt å følge eksemplene og se hvilken effekt de ulike alternativene har.

tail word-list.txt

For å se et annet antall linjer, bruk alternativet -n (antall linjer):

tail -n 15 word-list.txt

Faktisk kan du unnlate «-n», og bare bruke en bindestrek «-» og tallet. Pass på at det ikke er mellomrom mellom dem. Teknisk sett, dette er et foreldet kommandoskjemamen den er fortsatt i mannsideog det fungerer fortsatt.

tail -12 word-list.txt

Bruke hale med flere filer

Du kan ha halearbeid med flere filer samtidig. Bare send filnavnene på kommandolinjen:

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

En liten overskrift vises for hver fil slik at du vet hvilken fil linjene tilhører.

Vise linjer fra starten av en fil

Modifikatoren + (tell fra starten) lager halevisningslinjer fra starten av en fil, og begynner på et spesifikt linjenummer. Hvis filen din er veldig lang og du velger en linje nær starten av filen, vil du få mye utdata sendt til terminalvinduet. Hvis det er tilfelle, er det fornuftig å røre utgangen fra halen til mindre.

tail +440 list-1.txt

Du kan bla gjennom teksten på en kontrollert måte.

Fordi det tilfeldigvis er 20 445 linjer i denne filen, tilsvarer denne kommandoen å bruke «-6»-alternativet:

tail +20440 list-1.txt

Bruke bytes med hale

Du kan fortelle tail å bruke forskyvninger i byte i stedet for linjer ved å bruke alternativet -c (bytes). Dette kan være nyttig hvis du har en tekstfil som er formatert til poster i vanlig størrelse. Merk at et linjeskifttegn teller som én byte. Denne kommandoen viser de siste 93 bytene i filen:

tail -c 93 list-2.txt

Du kan kombinere alternativet -c (bytes) med + (tell fra starten av filen) modifikator, og spesifisere en forskyvning i byte talt fra starten av filen:

tail -c +351053 list-e.txt

Piping inn i halen

Tidligere førte vi utgangen fra hale til mindre . Vi kan også overføre utdata fra andre kommandoer til hale.

  Slik oppdaterer du Telegram Linux-skrivebordsappen

For å identifisere de fem filene eller mappene med de eldste endringstidene, bruk alternativet -t (sortér etter modifikasjonstid) med ls , og rør utdataene i tail.

ls -tl | tail -5

Hovedkommandoen viser linjer med tekst fra starten av en fil. Vi kan kombinere dette med tail for å trekke ut en del av filen. Her bruker vi head-kommandoen til å trekke ut de første 200 linjene fra en fil. Dette blir rørt inn i halen, som trekker ut de siste ti linjene. Dette gir oss linje 191 til linje 200. Det vil si de ti siste linjene av de første 200 linjene:

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

Denne kommandoen viser de fem mest minnekrevende prosessene.

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

La oss bryte det ned.

ps-kommandoen viser informasjon om kjørende prosesser. Alternativene som brukes er:

a: List opp alle prosesser, ikke bare for gjeldende bruker.
u: Vis en brukerorientert utgang.
x: List opp alle prosesser, inkludert de som ikke kjører i en TTY.

Sorteringskommandoen sorterer utgangen fra ps. Alternativene vi bruker med sortering er:

n: Sorter numerisk.
k +4: Sorter på den fjerde kolonnen.

tail -5 kommandoen viser de siste fem prosessene fra den sorterte utgangen. Dette er de fem mest minnetrengende prosessene.

  Hvordan bruke RustDesk på Linux

Bruke tail for å spore filer i sanntid

Å spore nye tekstoppføringer som kommer i en fil – vanligvis en loggfil – er enkelt med hale. Send filnavnet på kommandolinjen og bruk -f (følg) alternativet.

tail -f geek-1.log

Etter hvert som hver ny loggoppføring legges til i loggfilen, oppdaterer tail visningen i terminalvinduet.

Du kan avgrense utdataene til kun å inkludere linjer av spesiell relevans eller interesse. Her bruker vi grep til vis kun linjer som inkluderer ordet «gjennomsnittlig»:

tail -f geek-1.log | grep average

For å følge endringene til to eller flere filer, send filnavnene på kommandolinjen:

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

Hver oppføring er merket med en overskrift som viser hvilken fil teksten kom fra.

Displayet oppdateres hver gang en ny oppføring kommer inn i en fulgt fil. For å spesifisere oppdateringsperioden, bruk alternativet -s (dvaleperiode). Dette forteller tail å vente et antall sekunder, fem i dette eksemplet, mellom filsjekkene.

tail -f -s 5 geek-1.log

Riktignok kan du ikke se det ved å se på et skjermbilde, men oppdateringene til filen skjer en gang hvert annet sekund. De nye filoppføringene vises i terminalvinduet hvert femte sekund.

Når du følger teksttilføyelsene til mer enn én fil, kan du undertrykke overskriftene som indikerer hvilken loggfil teksten kommer fra. Bruk alternativet -q (stille) for å gjøre dette:

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

Utdataene fra filene vises i en sømløs blanding av tekst. Det er ingen indikasjon på hvilken loggfil hver oppføring kom fra.

halen har fortsatt verdi

Selv om tilgang til systemloggfilene nå tilbys av journalctl, har tail fortsatt mye å tilby. Dette gjelder spesielt når det brukes sammen med andre kommandoer, ved å røre inn i eller ut av halen.

systemd kan ha endret landskapet, men det er fortsatt et sted for tradisjonelle verktøy som samsvarer med Unix-filosofien om å gjøre én ting og gjøre det bra.