Hoe truncate (lege) bestanden in Linux

jun 15, 2021
admin

In sommige situaties wilt u misschien een bestaand bestand trunceren (leegmaken) tot een lengte van nul. In eenvoudige bewoordingen betekent trunceren dat u de inhoud van een bestand verwijdert zonder het bestand te verwijderen.

Een bestand trunceren is veel sneller en eenvoudiger dan het bestand verwijderen, het opnieuw maken en de juiste rechten en eigendomsrechten instellen. Ook, als het bestand wordt geopend door een proces, kan het verwijderen van het bestand leiden tot het programma dat het gebruikt om storingen te veroorzaken.

Deze tutorial legt uit hoe je bestanden af te korten tot nul grootte in Linux-systemen met behulp van shell redirection en de truncate commando.

Shell Redirection #

De eenvoudigste en meest gebruikte methode om bestanden af te korten is door gebruik te maken van de > shell redirection operator.

Het algemene formaat voor het trunceren van bestanden met behulp van redirection is:

: > filename

Laten we het commando eens uitsplitsen:

  • De dubbele punt : betekent true en produceert geen uitvoer.
  • De omleidingsoperator > leidt de uitvoer van het vorige commando om naar het opgegeven bestand.
  • filename, het bestand dat u wilt afkappen.

Als het bestand bestaat, zal het worden afgekapt tot nul. Anders wordt het bestand aangemaakt.

In plaats van : kunt u ook een ander commando gebruiken dat geen uitvoer produceert.

Hier volgt een voorbeeld van het gebruik van het catcommando om de inhoud van het /dev/null-apparaat uit te voeren, dat alleen een einde-van-bestand teken retourneert:

cat /dev/null > filename

Een ander commando dat kan worden gebruikt is echo. De optie -n zorgt ervoor dat echo geen newline toevoegt:

echo -n > filename

Op de meeste moderne shells zoals Bash of Zsh kunt u het commando voor het omleidingsteken weglaten en gebruiken:

> filename

Om een bestand te kunnen afkappen, moet u schrijfrechten hebben op het bestand. Normaal gesproken zou u sudo hiervoor gebruiken, maar de verhoogde root-rechten zijn niet van toepassing op de omleiding. Hier is een voorbeeld:

sudo : > /var/log/syslog
bash: /var/log/syslog: Permission denied

Er zijn verschillende oplossingen die omleiden met sudo mogelijk maken. De eerste optie is om een nieuwe commandoregel te starten met sudo en in die commandoregel een commando uit te voeren met de -c vlag:

sudo sh -c '> filename'

Een andere optie is om de uitvoer te pijpen naar het tee commando, de tee rechten te verheffen met sudo, en de lege uitvoer naar een gegeven bestand te schrijven:

: | sudo tee filename

truncate Command #

truncate is een command-line hulpprogramma waarmee u de grootte van een bestand kunt verkleinen of uitbreiden tot een bepaalde grootte.

De algemene syntaxis voor het afkappen van bestanden tot nul met het truncate-commando, is als volgt:

truncate -s 0 filename

De -s 0-optie zet de bestandsgrootte op nul.

Om bijvoorbeeld het toegangslogboek van Nginx te legen, gebruikt u:

sudo truncate -s 0 /var/log/nginx/access.log

Alle logbestanden legen #

Op den duur kan uw schijf vol raken met grote logbestanden die veel schijfruimte innemen.

Het volgende commando maakt de bestanden leeg die eindigen op “.log” onder de /var/log directory:

sudo truncate -s 0 /var/log/**/*.log 

Een betere optie zou zijn om de logbestanden te roteren, te comprimeren en te verwijderen met de logrotatetool.

Conclusie #

Om een bestand in Linux af te kappen, gebruikt u de herleidingsoperator > gevolgd door de bestandsnaam.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.