Hoe het staartcommando op Linux te gebruiken

Een terminalvenster met een Bash-prompt op een Linux-laptop in Ubuntu-stijl.
Fatmawati Achmad Zaenuri / Shutterstock

Het Linux tail commando geeft gegevens van het einde van een bestand weer. Het kan zelfs updates weergeven die in realtime aan een bestand zijn toegevoegd. We laten u zien hoe u het kunt gebruiken.

Heeft het systeem de staart gedood?

De tail commando toont u gegevens vanaf het einde van een bestand. Meestal worden nieuwe gegevens aan het einde van een bestand toegevoegd, dus de tail commando is een snelle en gemakkelijke manier om de meest recente toevoegingen aan een bestand te zien. Het kan ook een bestand bewaken en elke nieuwe tekstinvoer in dat bestand weergeven zodra deze zich voordoen. Dit maakt het een geweldig hulpmiddel om logbestanden te monitoren.

Veel moderne Linux-distributies hebben het systemd systeem- en servicemanager. Dit is het eerste proces dat wordt uitgevoerd, het heeft proces-ID 1 en het is de ouder van alle andere processen. Deze rol werd vroeger door ouderen vervuld init systeem.

Samen met deze wijziging kwam er een nieuw formaat voor systeemlogbestanden. Niet langer gemaakt in platte tekst, onder systemd ze zijn opgenomen in een binair formaat. Om deze logbestanden te lezen, moet u de journactl nut. De tail commando werkt met platte tekstformaten. Het leest geen binaire bestanden. Dus betekent dit de tail commando is een oplossing op zoek naar een probleem? Heeft het nog iets te bieden?

Er is meer aan de tail commando dan updates in realtime te tonen. En wat dat betreft, er zijn nog steeds tal van logbestanden die niet door het systeem worden gegenereerd en nog steeds worden gemaakt als platte tekstbestanden. Bijvoorbeeld logbestanden die zijn gegenereerd door toepassingen hebben hun formaat niet veranderd.

Met behulp van staart

Geef de naam van een bestand door aan tail en het toont je de laatste tien regels uit dat bestand. De voorbeeldbestanden die we gebruiken, bevatten lijsten met gesorteerde woorden. Elke regel is genummerd, dus het zou gemakkelijk moeten zijn om de voorbeelden te volgen en te zien welk effect de verschillende opties hebben.

tail word-list.txt

tail word-list.txt in een terminalvenster

Gebruik de om een ​​ander aantal regels te zien -n (aantal regels) optie:

tail -n 15 word-list.txt

tail -n 15 word-list.txt in een terminalvenster

Eigenlijk kunt u afzien van de “-n”, en gewoon een koppelteken “-” en het nummer gebruiken. Zorg ervoor dat er geen spaties tussen staan. Technisch gezien is dit een verouderd commandoformulier, maar het staat nog steeds in de man-pagina en het werkt nog steeds.

tail -12 word-list.txt

tail -12 word-list.txt in een terminalvenster

Tail gebruiken met meerdere bestanden

Je kan hebben tail werk met meerdere bestanden tegelijk. Geef de bestandsnamen gewoon op de opdrachtregel door:

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

tail -n 4 lijst-1.txt lijst-2.txt lijst-3.txt in een terminalvenster

Voor elk bestand wordt een kleine koptekst weergegeven, zodat u weet tot welk bestand de regels behoren.

Regels weergeven vanaf het begin van een bestand

De + (tel vanaf het begin) modificator maakt tail regels weergeven vanaf het begin van een bestand, beginnend bij een specifiek regelnummer. Als je bestand erg lang is en je kiest een regel dicht bij het begin van het bestand, krijg je veel output naar het terminalvenster gestuurd. Als dat het geval is, is het logisch om de uitvoer van tail in less.

tail +440 list-1.txt

tail +44 list-1.txt in een terminalvenster

U kunt gecontroleerd door de tekst bladeren.

Uitvoer van staart weergegeven in minder in een terminalvenster

Omdat er toevallig 20.445 regels in dit bestand zijn, is dit commando het equivalent van het gebruik van de optie “-6”:

tail +20440 list-1.txt

tail +20440 list-1.txt in een terminalvenster

Bytes gebruiken met staart

Je kunt het zien tail om offsets in bytes te gebruiken in plaats van regels door de -c (bytes) optie. Dit kan handig zijn als u een tekstbestand heeft dat is opgemaakt in records van normale grootte. Merk op dat een teken voor een nieuwe regel telt als één byte. Deze opdracht geeft de laatste 93 bytes in het bestand weer:

tail -c 93 list-2.txt

tail -c 93 list-2.txt in een terminalvenster

U kunt de -c (bytes) optie met de + (tel vanaf het begin van het bestand) modifier, en specificeer een offset in bytes geteld vanaf het begin van het bestand:

tail -c +351053 list-e.txt

tail -c +351053 list-e.txt in een terminalvenster

Leidingen in de staart

Eerder hebben we de uitvoer van tail in less . We kunnen ook de uitvoer van andere opdrachten naar tail.

Om de vijf bestanden of mappen met de oudste wijzigingstijden te identificeren, gebruikt u de -t (sorteer op wijzigingstijd) optie met ls , en leid de uitvoer naar tail.

ls -tl | tail -5

ls -lt |  tail -5 in een terminalvenster

De head commando toont regels tekst vanaf het begin van een bestand. We kunnen dit combineren met tail om een ​​gedeelte van het bestand uit te pakken. Hier gebruiken we de head commando om de eerste 200 regels uit een bestand te halen. Dit wordt doorgesluisd tail, die de laatste tien regels extraheert. Dit geeft ons de regels 191 tot en met regel 200. Dat zijn de laatste tien regels van de eerste 200 regels:

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

hoofd -n 200 lijst-1.txt |  tail -10 in een terminalvenster

Deze opdracht geeft een overzicht van de vijf meest geheugenvretende processen.

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

ps aux |  sorteren -nk +4 |  tail -5 in een terminalvenster

Laten we dat opsplitsen.

De ps commando geeft informatie weer over lopende processen. De gebruikte opties zijn:

  • een: Maak een lijst van alle processen, niet alleen voor de huidige gebruiker.
  • u: Geef een gebruikersgerichte uitvoer weer.
  • X: Lijst alle processen op, inclusief de processen die niet in een TTY worden uitgevoerd.

De sort commando sorteert de uitvoer van ps . De opties die we gebruiken sort zijn:

  • n: Numeriek sorteren.
  • k +4: Sorteer op de vierde kolom.

De tail -5 commando toont de laatste vijf processen van de gesorteerde uitvoer. Dit zijn de vijf meest geheugenvretende processen.

Tail gebruiken om bestanden in realtime te volgen

Het volgen van nieuwe tekstinvoer die in een bestand binnenkomen – meestal een logbestand – is eenvoudig tail. Geef de bestandsnaam door op de opdrachtregel en gebruik de -f (volg) optie.

tail -f geek-1.log

tail -f geek-1.log in een terminalvenster

Wanneer elke nieuwe logboekvermelding aan het logbestand wordt toegevoegd, werkt tail de weergave ervan in het terminalvenster bij.

Uitvoer van tail -f geek-1.log in een terminalvenster

U kunt de uitvoer verfijnen om alleen regels op te nemen die bijzonder relevant of interessant zijn. Hier gebruiken we grep om alleen regels weer te geven die het woord ‘gemiddeld’ bevatten:

tail -f geek-1.log | grep average

staart -f geek-1.log |  grep-gemiddelde in een terminalvenster

Om de wijzigingen in twee of meer bestanden te volgen, geeft u de bestandsnamen op de opdrachtregel door:

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

tail -f -n 5 geek-1.log geek-2.log in een terminalvenster

Elk item is gelabeld met een koptekst die laat zien uit welk bestand de tekst afkomstig is.

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

De weergave wordt telkens bijgewerkt wanneer een nieuw item in een gevolgd bestand binnenkomt. Gebruik de -s (slaapperiode) optie. Dit vertelt tail om een ​​aantal seconden te wachten, vijf in dit voorbeeld, tussen bestandscontroles.

tail -f -s 5 geek-1.log

tail -f -s 5 geek-1.log in een terminalvenster

Toegegeven, je kunt het niet zien aan de hand van een screenshot, maar de updates naar het bestand gebeuren eens in de twee seconden. De nieuwe bestandsvermeldingen zijn weergegeven in het terminalvenster eens per vijf seconden.

Uitvoer van tail -f -s 5 geek-1.log

Wanneer u de teksttoevoegingen aan meer dan één bestand volgt, kunt u de kopteksten die aangeven uit welk logbestand de tekst komt, onderdrukken. Gebruik de -q (stille) optie om dit te doen:

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

tail -f -q geek-1.log geek-2.log in een terminalvenster

De uitvoer van de bestanden wordt weergegeven in een naadloze tekstmix. Er is geen indicatie uit welk logboekbestand elk item afkomstig is.

Uitvoer van tail -f -q geek-1.log geek-2.log in een terminalvenster

staart heeft nog steeds waarde

Hoewel toegang tot de systeemlogbestanden nu wordt verleend door journalctl, tail heeft nog steeds veel te bieden. Dit geldt met name wanneer het wordt gebruikt in combinatie met andere opdrachten, door in of uit te pipen tail.

systemd heeft misschien het landschap veranderd, maar er is nog steeds een plek voor traditionele hulpprogramma’s die voldoen aan de Unix-filosofie om één ding te doen en het goed te doen.

Nieuwste artikelen

Gerelateerde artikelen