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.

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/


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


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.


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


truncar el archivo no me funciona, hice la prueba en centos 7 y en redhat 5
c4f4t0r
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.