Sådan afkortes (tomme) filer i Linux

jun 15, 2021
admin

I nogle situationer vil du måske gerne afkortes (tømme) en eksisterende fil til en nul-længde. Med enkle ord betyder truncating af en fil, at filindholdet fjernes uden at slette filen.

Truncating af en fil er meget hurtigere og nemmere end at slette filen, genskabe den og indstille de korrekte tilladelser og ejerskab. Hvis filen er åbnet af en proces, kan fjernelsen af filen også medføre, at det program, der bruger den, ikke fungerer korrekt.

Denne vejledning forklarer, hvordan man afkorter filer til nul størrelse i Linux-systemer ved hjælp af shell-omdirigering og kommandoen truncate.

Shell-omdirigering #

Den nemmeste og mest anvendte metode til at afkortere filer er at bruge > shell-omdirigeringsoperatoren.

Det generelle format for afkortning af filer ved hjælp af omdirigering er:

: > filename

Lad os bryde kommandoen ned:

  • Det : kolon betyder true og giver ingen output.
  • Operatoren for omdirigering > omdirigerer output fra den foregående kommando til den angivne fil.
  • filename, den fil, du vil afkortes.

Hvis filen findes, vil den blive afkortet til nul. Ellers vil filen blive oprettet.

I stedet for : kan du også bruge en anden kommando, der ikke producerer noget output.

Her er et eksempel på at bruge catkommandoen til at outputte indholdet af enheden /dev/null, som kun returnerer et end-of-file-tegn:

cat /dev/null > filename

En anden kommando, der kan bruges, er echo. Indstillingen -n fortæller echo, at den ikke skal tilføje en newline:

echo -n > filename

På de fleste moderne shells som Bash eller Zsh kan du udelade kommandoen før omdirigeringssymbolet og bruge:

> filename

For at kunne afkortes en fil, skal du have skrivetilladelser på filen. Normalt ville du bruge sudotil dette, men de forhøjede root-privilegier gælder ikke for omdirigering. Her er et eksempel:

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

Der findes flere løsninger, der gør det muligt at omdirigere med sudo. Den første mulighed kan køre en ny shell med sudo og udføre en kommando inde i denne shell ved hjælp af -c-flaget:

sudo sh -c '> filename'

En anden mulighed er at lede output til tee-kommandoen, hæve tee-privilegierne med sudo og skrive det tomme output til en given fil:

: | sudo tee filename

truncate Kommando #

truncate er et kommandolinjeværktøj, der giver dig mulighed for at formindske eller udvide størrelsen af en fil til en given størrelse.

Den generelle syntaks for afkortning af filer til nul størrelse med kommandoen truncate, er som følger:

truncate -s 0 filename

Optionen -s 0 sætter filstørrelsen til nul.

For eksempel for at tømme Nginx-adgangsloggen skal du bruge:

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

Tøm alle logfiler #

Med tiden kan dit diskdrev blive overfyldt med en masse store logfiler, der optager store mængder diskplads.

Følgende kommando vil tømme filer, der slutter med “.log” under mappen /var/log:

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

En bedre mulighed ville være at rotere, komprimere og fjerne logfilerne med logrotateværktøjet.

Konklusion #

For at afkortede en fil i Linux skal du bruge omdirigeringsoperatoren > efterfulgt af filnavnet.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.