Hoe truncate (lege) bestanden in Linux
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
:
betekenttrue
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 cat
commando 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 logrotate
tool.
Conclusie #
Om een bestand in Linux af te kappen, gebruikt u de herleidingsoperator >
gevolgd door de bestandsnaam.