In alcune situazioni, potresti voler troncare (svuotare) un file esistente a una lunghezza zero. In parole semplici, troncare un file significa rimuovere il contenuto del file senza eliminare il file.
Il troncamento di un file è molto più rapido e semplice rispetto all'eliminazione del file, alla sua ricreazione e all'impostazione delle autorizzazioni e della proprietà corrette. Inoltre, se il file viene aperto da un processo, la rimozione del file potrebbe causare il malfunzionamento del programma che lo utilizza.
Questo tutorial spiega come troncare i file a una dimensione zero nei sistemi Linux utilizzando il reindirizzamento della shell e il truncate
comando.
Reindirizzamento shell #
Il metodo più semplice e più utilizzato per troncare i file è utilizzare il >
operatore di reindirizzamento della shell.
Il formato generale per troncare i file utilizzando il reindirizzamento è:
: > filename
Analizziamo il comando:
- Il
:
due punti significatrue
e non produce output. - L'operatore di reindirizzamento
>
reindirizza l'output del comando precedente al file specificato. filename
, il file che vuoi troncare.
Se il file esiste, verrà troncato a zero. In caso contrario, il file verrà creato.
Invece di :
può anche usare un altro comando che non produce output.
Ecco un esempio di utilizzo del cat
comando per emettere il contenuto di /dev/null
dispositivo, che restituisce solo un carattere di fine file:
cat /dev/null > filename
Un altro comando che può essere utilizzato è echo
. Il -n
l'opzione dice echo
non aggiungere una nuova riga:
echo -n > filename
Sulla maggior parte delle shell moderne come Bash o Zsh puoi omettere il comando prima del simbolo di reindirizzamento e utilizzare:
> filename
Per poter troncare un file, è necessario disporre dei permessi di scrittura sul file. Di solito, dovresti usare sudo
per questo, ma i privilegi di root elevati non si applicano al reindirizzamento. Ecco un esempio:
sudo : > /var/log/syslog
bash: /var/log/syslog: Permission denied
Esistono diverse soluzioni che consentono il reindirizzamento con sudo
. La prima opzione può eseguire una nuova shell con sudo ed eseguire un comando all'interno di quella shell usando il -c
bandiera:
sudo sh -c '> filename'
Un'altra opzione è inviare l'output al tee
comando, eleva il tee
privilegi con sudo
e scrivi l'output vuoto in un determinato file:
: | sudo tee filename
truncate
Comando #
truncate
è un'utilità della riga di comando che ti consente di ridurre o estendere la dimensione di un file a una determinata dimensione.
La sintassi generale per troncare i file a dimensione zero con truncate
comando, è il seguente:
truncate -s 0 filename
Il -s 0
l'opzione imposta la dimensione del file su zero.
Ad esempio, per svuotare il registro di accesso di Nginx dovresti usare:
sudo truncate -s 0 /var/log/nginx/access.log
Svuota tutti i file di registro #
Con il passare del tempo, l'unità disco potrebbe essere ingombra con molti file di registro di grandi dimensioni che occupano grandi quantità di spazio su disco.
Il comando seguente svuoterà i file che terminano con ".log" sotto il /var/log
directory:
sudo truncate -s 0 /var/log/**/*.log
Un'opzione migliore sarebbe ruotare, comprimere e rimuovere i file di log con logrotate
strumento.
Conclusione #
Per troncare un file in Linux, utilizzare l'operatore di reindirizzamento >
seguito dal nome del file.
Se hai domande o commenti, lascia un commento qui sotto.