Hur man trunker (tomma) filer i Linux

jun 15, 2021
admin

I vissa situationer kan du vilja trunkera (tömma) en befintlig fil till en noll-längd. Med enkla ord innebär trunkning av en fil att man tar bort filinnehållet utan att radera filen.

Trunkning av en fil är mycket snabbare och enklare än att radera filen, återskapa den och ställa in rätt behörigheter och ägarskap. Dessutom, om filen öppnas av en process, kan borttagning av filen leda till att programmet som använder den fungerar dåligt.

Denna handledning förklarar hur man trunkerar filer till nollstorlek i Linuxsystem med hjälp av skalomdirigering och kommandot truncate.

Shell Redirection #

Den enklaste och mest använda metoden för att trunkera filer är att använda skalomdirigeringsoperatorn >.

Det allmänna formatet för att förkorta filer med hjälp av omdirigering är:

: > filename

Låt oss dela upp kommandot:

  • Det : kolonet betyder true och ger ingen utdata.
  • Operatorn för omdirigering > omdirigerar utdata från föregående kommando till den angivna filen.
  • filename, filen som du vill avkorta.

Om filen finns kommer den att avkortas till noll. Annars kommer filen att skapas.

Istället för : kan man också använda ett annat kommando som inte ger något utdata.

Här är ett exempel på hur man använder catkommandot för att ge ut innehållet i enheten /dev/null, som bara returnerar ett tecken för filens slut:

cat /dev/null > filename

Ett annat kommando som kan användas är echo. Alternativet -n talar om för echo att inte lägga till en ny rad:

echo -n > filename

På de flesta moderna shells som Bash eller Zsh kan du utelämna kommandot före omdirigeringssymbolen och använda:

> filename

För att kunna trunka av en fil måste du ha skrivrättigheter på filen. Vanligtvis skulle du använda sudoför detta, men de förhöjda rooträttigheterna gäller inte för omdirigering. Här är ett exempel:

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

Det finns flera lösningar som tillåter omdirigering med sudo. Det första alternativet kan köra ett nytt skal med sudo och utföra ett kommando i det skalet med flaggan -c:

sudo sh -c '> filename'

Ett annat alternativ är att leda utmatningen till kommandot tee, höja tee-privilegierna med sudo och skriva den tomma utmatningen till en given fil:

: | sudo tee filename

truncate Kommando #

truncate är ett kommandoradsverktyg som gör det möjligt att krympa eller utöka en fil till en viss storlek.

Den allmänna syntaxen för att trunkera filer till nollstorlek med kommandot truncate är följande:

truncate -s 0 filename

Optionen -s 0 sätter filstorleken till noll.

För att t.ex. tömma Nginx åtkomstlogg skulle du använda:

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

Tömma alla loggfiler #

Med tiden kan din hårddisk bli överfull av stora loggfiler som tar upp mycket diskutrymme.

Med följande kommando tömmer du filer som slutar med ”.log” i katalogen /var/log:

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

Ett bättre alternativ är att rotera, komprimera och ta bort loggfilerna med verktyget logrotate.

Slutsats #

För att förkorta en fil i Linux använder du omdirigeringsoperatorn > följt av filnamnet.

Lämna ett svar

Din e-postadress kommer inte publiceras.