
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

Gebruik de om een ​​ander aantal regels te zien -n (aantal regels) optie:
tail -n 15 word-list.txt

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 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

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

U kunt gecontroleerd door de tekst bladeren.

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

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

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

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

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

Deze opdracht geeft een overzicht van de vijf meest geheugenvretende processen.
ps aux | sort -nk +4 | tail -5

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

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

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

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

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

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

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.

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

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

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.