bash - resueltos - Script de shell Unix para truncar un archivo grande
scripts linux ejercicios resueltos (4)
Intento escribir un script de Unix que truncará / vaciará un archivo que una aplicación está escribiendo / abriendo continuamente cuando alcanza, digamos, 3GB de espacio. Sé que el siguiente comando lo haría:
cp /dev/null [filename]
Pero voy a ejecutar esto en un entorno de producción de forma automática como un trabajo de cron, solo publicando aquí para ver si ustedes enfrentaron algún problema al hacer algo similar a esto.
Eso me parece razonable. Unix, por supuesto, le permitirá hacer esto de 50 maneras diferentes. Por ejemplo,
echo -n "" >filename
cat /dev/null >filename
He usado el siguiente comando en debian
truncate -s 0 filename
Solo para agregar otra respuesta,
: > filename
:
es un no-op en bash, por lo que básicamente solo abre el archivo para escritura (que por supuesto trunca el archivo) y luego lo cierra inmediatamente.
EDITAR: como comentó Shellter, en realidad no necesitas un comando para ir junto con la redirección:
$ echo foo > foo.txt
$ cat foo.txt
foo
$ > foo.txt
$ cat foo.txt
$
Una simple redirección por sí sola borrará el archivo.
trunc filename
funciona en AIX sabor de UNIX