Hur man använder svanskommandot på Linux

Linux tail-kommandot visar data från slutet av en fil. Den kan till och med visa uppdateringar som läggs till i en fil i realtid. Vi visar dig hur du använder den.

Systemd Kill tail?

Svanskommandot visar dig data från slutet av en fil. Vanligtvis läggs ny data till i slutet av en fil, så tail-kommandot är ett snabbt och enkelt sätt att se de senaste tilläggen till en fil. Den kan också övervaka en fil och visa varje ny textinmatning till den filen när de uppstår. Detta gör det till ett utmärkt verktyg för att övervaka loggfiler.

Många moderna Linux-distributioner har antagit systemd system och service manager. Detta är den första processen som körs, det har den process-ID 1, och det är föräldern till alla andra processer. Den här rollen var förr hanteras av de äldre init system.

Tillsammans med denna förändring kom ett nytt format för systemloggfiler. Skapas inte längre i vanlig text, under systemd registreras de i binärt format. Till läs dessa loggfiler måste du använda journactl-verktyget. Svanskommandot fungerar med vanliga textformat. Den läser inte binära filer. Så betyder det att svanskommandot är en lösning på jakt efter ett problem? Har den fortfarande något att erbjuda?

Det finns mer med svanskommandot än att visa uppdateringar i realtid. Och för den delen finns det fortfarande gott om loggfiler som inte är systemgenererade och som fortfarande skapas som vanliga textfiler. Loggfiler som genereras av applikationer har till exempel inte ändrat format.

Använder svans

Skicka namnet på en fil till tail och den kommer att visa dig de sista tio raderna från den filen. Exempelfilerna vi använder innehåller listor med sorterade ord. Varje rad är numrerad, så det ska vara enkelt att följa exemplen och se vilken effekt de olika alternativen har.

tail word-list.txt

För att se ett annat antal rader, använd alternativet -n (antal rader):

tail -n 15 word-list.txt

Egentligen kan du avstå från ”-n” och bara använda ett bindestreck ”-” och numret. Se till att det inte finns några mellanrum mellan dem. Tekniskt, detta är ett föråldrat kommandoformulärmen det är fortfarande i man pageoch det fungerar fortfarande.

tail -12 word-list.txt

Använda svans med flera filer

Du kan ha svansarbete med flera filer samtidigt. Skicka bara filnamnen på kommandoraden:

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

En liten rubrik visas för varje fil så att du vet vilken fil raderna tillhör.

Visar rader från början av en fil

Modifieraren + (räkna från början) gör att svansen visar rader från början av en fil, med början på ett specifikt radnummer. Om din fil är mycket lång och du väljer en rad nära filens början, kommer du att få mycket utdata skickat till terminalfönstret. Om så är fallet är det vettigt att röra utsignalen från svansen till mindre.

tail +440 list-1.txt

Du kan bläddra igenom texten på ett kontrollerat sätt.

Eftersom det råkar finnas 20 445 rader i den här filen, motsvarar det här kommandot att använda alternativet ”-6”:

tail +20440 list-1.txt

Använda bytes med svans

Du kan tala om för tail att använda förskjutningar i byte istället för rader genom att använda alternativet -c (bytes). Detta kan vara användbart om du har en textfil som formaterats till poster i normal storlek. Observera att ett nyradstecken räknas som en byte. Detta kommando visar de sista 93 byten i filen:

tail -c 93 list-2.txt

Du kan kombinera alternativet -c (byte) med modifieraren + (räkna från början av filen) och ange en offset i byte räknat från början av filen:

tail -c +351053 list-e.txt

Piping in i svansen

Tidigare överförde vi utgången från svansen till mindre . Vi kan också överföra utdata från andra kommandon till svansen.

För att identifiera de fem filerna eller mapparna med de äldsta modifieringstiderna, använd alternativet -t (sortera efter modifieringstid) med ls , och skicka utdata till tail.

ls -tl | tail -5

Chefskommandot listar textrader från början av en fil. Vi kan kombinera detta med tail för att extrahera en del av filen. Här använder vi kommandot head för att extrahera de första 200 raderna från en fil. Detta leds in i svansen, som drar ut de sista tio raderna. Detta ger oss raderna 191 fram till rad 200. Det vill säga de sista tio raderna av de första 200 raderna:

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

Detta kommando listar de fem mest minneskrävande processerna.

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

Låt oss bryta ner det.

Kommandot ps visar information om pågående processer. Alternativen som används är:

a: Lista alla processer, inte bara för den aktuella användaren.
u: Visa en användarorienterad utdata.
x: Lista alla processer, inklusive de som inte körs i en TTY.

Sorteringskommandot sorterar utgången från ps. Alternativen vi använder med sortering är:

n: Sortera numeriskt.
k +4: Sortera på den fjärde kolumnen.

Kommandot tail -5 visar de senaste fem processerna från den sorterade utmatningen. Dessa är de fem mest minneshungriga processerna.

Använda tail för att spåra filer i realtid

Att spåra nya textinlägg som kommer in i en fil—vanligtvis en loggfil—är enkelt med svans. Skicka filnamnet på kommandoraden och använd alternativet -f (följ).

tail -f geek-1.log

När varje ny loggpost läggs till i loggfilen uppdaterar tail dess visning i terminalfönstret.

Du kan förfina utdata så att det bara inkluderar rader av särskild relevans eller intresse. Här använder vi grep till visa endast linjer som inkluderar ordet ”genomsnittlig”:

tail -f geek-1.log | grep average

För att följa ändringarna av två eller flera filer, skicka filnamnen på kommandoraden:

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

Varje post är taggad med en rubrik som visar vilken fil texten kom ifrån.

Displayen uppdateras varje gång en ny post kommer in i en följt fil. För att ange uppdateringsperioden, använd alternativet -s (sömnperiod). Detta säger åt tail att vänta ett antal sekunder, fem i det här exemplet, mellan filkontrollerna.

tail -f -s 5 geek-1.log

Visserligen kan du inte se det genom att titta på en skärmdump, men uppdateringarna av filen sker en gång varannan sekund. De nya filposterna visas i terminalfönstret en gång var femte sekund.

När du följer texttilläggen till mer än en fil kan du dölja rubrikerna som anger vilken loggfil texten kommer ifrån. Använd alternativet -q (tyst) för att göra detta:

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

Utdata från filerna visas i en sömlös textblandning. Det finns ingen indikation från vilken loggfil varje post kom ifrån.

svansen har fortfarande värde

Även om åtkomst till systemloggfilerna nu tillhandahålls av journalctl, har tail fortfarande mycket att erbjuda. Detta är särskilt sant när det används i kombination med andra kommandon, genom att röra in i eller ut ur svansen.

systemd kan ha förändrat landskapet, men det finns fortfarande en plats för traditionella verktyg som överensstämmer med Unix-filosofin att göra en sak och göra det bra.