Hur man trunker (tomma) filer i Linux
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 betydertrue
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 cat
kommandot 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 sudo
fö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.