Estoy tratando de escribir un script Unix que truncará / vaciará un archivo que una aplicación escribe / abre continuamente cuando alcanza, por ejemplo, 3 GB 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 automáticamente como un trabajo cron, solo publique aquí para ver si tuvieron algún problema al hacer algo similar a esto.
logrotate
, podría proporcionarle algún valor (¡pero sería molesto configurarlo (solo adivinar)!).Respuestas:
Solo para agregar otra respuesta,
:
es una operación no operativa en bash (compatible con POSIX), por lo que esencialmente solo abre el archivo para escribir (lo que, por supuesto, lo trunca) y luego lo cierra inmediatamente.EDITAR: como comentó Shellter, en realidad no necesita un comando para acompañar 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.
fuente
> filename
(como estoy seguro que sabes). Buena suerte a todos.He usado el siguiente comando en debian
fuente
sudo sh -c ': > filename'
también se truncaráfilename
sudo
:sudo cp /dev/null filename
. Tambiéncp
es portátil mientras quetruncate
es solo Linux moderno.Eso me parece razonable. Unix, por supuesto, le permitiría hacer esto de 50 formas diferentes. Por ejemplo,
echo -n "" >filename cat /dev/null >filename
fuente
trunc filename
funciona en la versión AIX de UNIX
fuente