Cómo truncar archivos vacíos en Linux

27 feb 2021 2 min di lettura
Cómo truncar archivos vacíos en Linux
Indice dei contenuti

Introducción

En algunas situaciones, es posible que desee truncar (vaciar) un archivo de longitud cero existente. En términos simples, truncar un archivo significa eliminar el contenido del archivo sin eliminarlo.

Truncar un archivo es mucho más rápido y fácil que eliminarlo o volver a crearlo y configurar los permisos y propiedades correctos. Además, si el archivo se abre mediante un proceso, la eliminación del archivo puede hacer que el programa que lo utiliza no funcione correctamente.

Este tutorial explica cómo truncar archivos de tamaño cero en sistemas Linux mediante la redirección de shell y el comando truncate

Redirección de Shell

El método más simple y más comúnmente utilizado para truncar archivos es usar el >

El formato general para truncar archivos mediante la redirección es:

: > filename

Analicemos el comando:

  • Los dos puntos : significa true y no produce salida.
  • El operador de redirección > redirige la salida del comando anterior al archivo especificado.
  • filename, el archivo que desea truncar.

Si el archivo existe, se truncará a cero. De lo contrario, se creará el archivo.

En lugar de : también puede utilizar otro comando que no produzca ningún resultado.

A continuación, se muestra un ejemplo del uso del cat para generar el contenido del /dev/null, que solo devuelve un carácter de fin de archivo:

cat /dev/null > filename

Otro comando que se puede utilizar es echo. La -n dice no agregar una nueva línea:

echo -n > filename

En la mayoría de los shells modernos como Bash o Zsh, puede omitir el comando antes del símbolo de redirección y usar:

> filename

Para poder truncar un archivo, debe tener permisos de escritura en el archivo. Por lo general, usaría el sudo, pero los privilegios de root elevados no se aplican a la redirección. Aquí hay un ejemplo:

sudo: > /var/log/syslog

Debería recibir un mensaje de salida similar al siguiente:

bash: /var/log/syslog: Permission denied

Existen varias soluciones que permiten la redirección con sudo. La primera opción puede ejecutar un nuevo shell con sudo y ejecutar un comando dentro de ese shell usando la bandera -c

sudo sh -c '> filename'

Otra opción es reenviar la salida al tee, elevar los privilegios de tee sudo y escribir la salida en blanco en un archivo determinado:

: | sudo tee filename

Comando truncar

truncate es una utilidad de línea de comandos que le permite reducir o extender el tamaño de un archivo a un tamaño determinado.

La sintaxis general para truncar archivos de tamaño cero con el truncate es la siguiente:

truncate -s 0 filename

La -s 0 establece el tamaño del archivo en cero.

Por ejemplo, para borrar el registro de acceso de Nginx (archivo de registro) debe usar:

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

Vaciar todos los archivos de registro (registro)

Con el tiempo, su unidad de disco puede saturarse con muchos archivos de registro grandes que ocupan grandes cantidades de espacio en disco.

El siguiente comando vacía los archivos que terminan con " .log " en el /var/log:

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

Una mejor opción sería rotar, comprimir y eliminar los archivos de registro con la herramienta logrotate

Conclusión

Para truncar un archivo en Linux, use el operador de redireccionamiento > seguido del nombre del archivo.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.