En Unix, ¿cuál es la mejor manera de reducir el tamaño de un archivo de registro masivo en el que se está escribiendo activamente?

11

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.

Phil
fuente

Respuestas:

12

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/

ewwhite
fuente
1
¿se supone que los dos puntos indican un aviso, o eso realmente entra en el comando?
Phil
Los dos puntos son parte del comando.
ewwhite
En realidad no necesitas el colon.
MikeyB
Es un no-op. No es necesario, pero me gusta mantenerlo allí cuando hago la recomendación.
ewwhite
Esto no funcionó para mí, el registro no cambió de tamaño. Fue a 0, pero luego volvió a su tamaño completo
thouliha
2

Podría ponerlo en logrotate, luego no se saldrá de control tan fácilmente

netpixie
fuente
En última instancia, eso tiene que suceder. Soy nuevo en este trabajo ...
Phil
1

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

echo "" >/var/log/fileYouWantToEmpty

De esa manera, el archivo termina vacío pero sigue siendo el mismo archivo / inodo para que no interrumpa el programa que está registrando.

Twirrim
fuente
0

También puede probar cat / dev / null> / var / log /. Pero, debo advertir que / dev / null no está implementado en algunas de las versiones anteriores ...

Nandhini Anand
fuente
truncar el archivo no me funciona, hice la prueba en centos 7 y en redhat 5
c4f4t0r