(Tyhjien) tiedostojen typistäminen Linuxissa
Jossain tilanteissa saatat haluta typistää (tyhjentää) olemassa olevan tiedoston nollapituuteen. Yksinkertaisesti sanottuna tiedoston typistäminen tarkoittaa tiedoston sisällön poistamista poistamatta tiedostoa.
Tiedoston typistäminen on paljon nopeampaa ja helpompaa kuin tiedoston poistaminen, sen luominen uudelleen ja oikeiden oikeuksien ja omistusoikeuden asettaminen. Lisäksi, jos tiedosto on jonkin prosessin avaama, tiedoston poistaminen voi aiheuttaa sitä käyttävän ohjelman toimintahäiriön.
Tässä opetusohjelmassa kerrotaan, miten tiedostot typistetään nollakokoisiksi Linux-järjestelmissä käyttämällä komentotulkin uudelleenohjausta ja truncate
-komentoa.
Komentotulkin uudelleenohjaus #
Helpoisin ja käytetyin menetelmä tiedostojen typistämiseen on komentotulkin uudelleenohjausoperaattorin >
käyttö.
Yleinen muoto tiedostojen typistämiseen uudelleenohjauksen avulla on:
: > filename
Kerrataanpa komento:
- Kaksoispiste
:
tarkoittaatrue
eikä tuota tulosta. - Ohjausoperaattori
>
ohjaa edellisen komennon tulosteen annettuun tiedostoon. -
filename
, tiedosto, jonka haluat typistää.
Jos tiedosto on olemassa, se typistetään nollaksi. Muussa tapauksessa tiedosto luodaan.
Komennon :
sijasta voidaan käyttää myös toista komentoa, joka ei tuota tulostetta.
Tässä on esimerkki cat
komennon käyttämisestä /dev/null
-laitteen sisällön tulostamiseen, joka palauttaa vain tiedoston loppumerkin:
cat /dev/null > filename
Muuten komento, jota voidaan käyttää, on echo
. Vaihtoehto -n
käskee echo
:n olla liittämättä uutta riviä:
echo -n > filename
Nykyaikaisimmissa komentosuorittimissa, kuten Bashissa tai Zsh:ssä, voit jättää komennon pois ennen uudelleenohjaussymbolia ja käyttää:
> filename
Voidaksesi typistää tiedostoa sinulla täytyy olla kirjoitusoikeudet tiedostoon. Yleensä tähän käytetään sudo
, mutta korotetut pääkäyttäjäoikeudet eivät koske uudelleenohjausta. Tässä on esimerkki:
sudo : > /var/log/syslog
bash: /var/log/syslog: Permission denied
On olemassa useita ratkaisuja, jotka mahdollistavat uudelleenohjauksen sudo
:llä. Ensimmäisessä vaihtoehdossa voidaan ajaa uusi komentotulkki sudolla ja suorittaa komento tuon komentotulkin sisällä käyttäen -c
-lippua:
sudo sh -c '> filename'
Toinen vaihtoehto on putkittaa tuloste komentoon tee
, korottaa tee
:n oikeuksia sudo
:llä ja kirjoittaa tyhjä tuloste annettuun tiedostoon:
: | sudo tee filename
truncate Komento #
truncate
on komentorivin apuohjelma, jonka avulla voit pienentää tai pidentää tiedoston kokoa tiettyyn kokoon.
Yleinen syntaksi tiedostojen typistämiseen nollakokoon komennolla truncate
on seuraava:
truncate -s 0 filename
Vaihtoehto -s 0
asettaa tiedoston koon nollaan.
Tyhjentääksesi esimerkiksi Nginxin käyttölokin käyttäisit seuraavaa komentoa:
sudo truncate -s 0 /var/log/nginx/access.log
Tyhjennä kaikki lokitiedostot #
Aikojen saattaessa levyasemasi saattaa sotkeentua moniin suuriin lokitiedostoihin, jotka vievät paljon levytilaa.
Jatkossa seuraava komento tyhjentää tiedostot, jotka päättyvät muotoon ”.log” hakemiston /var/log
alta:
sudo truncate -s 0 /var/log/**/*.log
Parempi vaihtoehto olisi pyörittää, pakata ja poistaa lokitiedostot logrotate
työkalulla.
Johtopäätös #
Tiedoston typistämiseen Linuxissa käytä uudelleenohjausoperaattoria >
, jota seuraa tiedoston nimi.