En un servidor Linux, quiero reducir el tamaño de un archivo de registro que es de varios GB. Cortar la mitad superior, o tal vez el primer millón de líneas funcionaría.
Esto aparece en entrevistas con bastante frecuencia ...
¿Está buscando truncar el archivo sin interrumpir los procesos? ¿Alguna de la información en el archivo de registro es valiosa? Si es así, generalmente "pongo a cero" el archivo con una cadena bash simple.
: > /var/log/badlogfile
Esto surge en situaciones en las que puede tener una aplicación que no se puede reiniciar de manera controlada. Digamos que es una aplicación de negociación financiera y el programa no se puede detener ni reiniciar durante el día de negociación. Sin embargo, los archivos de registro están creciendo a un ritmo obsceno debido a un error en la aplicación. Truncar los archivos de registro utilizando el método anterior o posterior puede mantener el sistema en funcionamiento.
Ver también: http://www.cyberciti.biz/faq/truncate-large-text-file-in-unix-linux/
Podría ponerlo en logrotate, luego no se saldrá de control tan fácilmente
fuente
Si te está escribiendo activamente, realmente no tienes mucho que puedas hacer a modo de truncamiento. Sus únicas opciones son dejar el archivo en blanco (puede copiarlo en otro lugar primero).
De esa manera, el archivo termina vacío pero sigue siendo el mismo archivo / inodo para que no interrumpa el programa que está registrando.
fuente
También puede probar cat / dev / null> / var / log /. Pero, debo advertir que / dev / null no está implementado en algunas de las versiones anteriores ...
fuente