(Üres) fájlok csonkítása Linuxban

jún 15, 2021
admin

Bizonyos helyzetekben előfordulhat, hogy egy meglévő fájlt nullás hosszúságúra szeretnénk csonkítani (kiüríteni). Egyszerűen fogalmazva, a fájl csonkítása a fájl tartalmának eltávolítását jelenti a fájl törlése nélkül.

A fájl csonkítása sokkal gyorsabb és egyszerűbb, mint a fájl törlése, újbóli létrehozása és a megfelelő jogosultságok és tulajdonjogok beállítása. Továbbá, ha a fájlt egy folyamat nyitja meg, a fájl eltávolítása az azt használó program hibás működését okozhatja.

Ez a bemutató elmagyarázza, hogyan lehet a fájlokat nullára csökkenteni a Linux rendszerekben a shell átirányítás és a truncate parancs segítségével.

Shell átirányítás #

A fájlok csonkításának legegyszerűbb és leggyakrabban használt módszere a > shell átirányítás operátor használata.

A fájlok átirányítással történő csonkításának általános formátuma:

: > filename

Bontjuk le a parancsot:

  • A : kettőspont trueot jelent, és nem eredményez kimenetet.
  • Az átirányítási operátor > átirányítja az előző parancs kimenetét a megadott fájlba.
  • filename, a csonkítandó fájl.

Ha a fájl létezik, akkor nullára lesz csonkítva. Ellenkező esetben a fájl létrejön.

A : helyett használhatunk egy másik parancsot is, amely nem ad kimenetet.

Itt egy példa a catparancs használatára a /dev/null eszköz tartalmának kiadására, amely csak egy fájlvég karaktert ad vissza:

cat /dev/null > filename

Egy másik használható parancs a echo. A -n opció azt mondja a echo-nek, hogy ne csatoljon új sort:

echo -n > filename

A legtöbb modern héjprogramban, például a Bash-ben vagy a Zsh-ben elhagyhatjuk az átirányítási jel előtti parancsot, és használhatjuk:

> filename

Ahhoz, hogy egy fájlt le tudjunk vágni, írási jogokkal kell rendelkeznünk a fájlhoz. Általában a sudot használná erre, de a megemelt root jogosultságok nem vonatkoznak az átirányításra. Íme egy példa:

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

Már több olyan megoldás is létezik, amely lehetővé teszi az átirányítást sudo használatával. Az első lehetőség egy új héj futtatása sudo-val, és a héjon belül egy parancs végrehajtása a -c flag használatával:

sudo sh -c '> filename'

A másik lehetőség a kimenet átvezetése a tee parancsba, a tee jogosultságok emelése a sudo-vel, és az üres kimenet kiírása egy adott fájlba:

: | sudo tee filename

truncate Parancs #

truncate egy parancssori segédprogram, amely lehetővé teszi, hogy egy fájl méretét adott méretre zsugorítsa vagy növelje.

A fájlok truncate paranccsal történő nullára csonkításának általános szintaxisa a következő:

truncate -s 0 filename

A -s 0 opció nullára állítja a fájl méretét.

Az Nginx hozzáférési napló kiürítéséhez például a következő parancsot használhatja:

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

Empty All Log Files #

Az idő múlásával a lemezmeghajtója zsúfolttá válhat a sok nagy naplófájl miatt, amelyek nagy mennyiségű lemezterületet foglalnak el.

A következő parancs kiüríti a “.log” fájlt a /var/log könyvtár alatt:

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

Jobb megoldás lenne a naplófájlok forgatása, tömörítése és eltávolítása a logrotatetool segítségével.

Következtetés #

A fájl csonkításához Linuxban használja a > átirányítási operátort, amelyet a fájl neve követ.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.