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 significatruee 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.