GNU/Linux >> Tutoriales Linux >  >> Linux

Eliminar las primeras N líneas de un archivo de registro activo

Creo que esta tarea se puede lograr con sed

sed -i '1,10d' myfile

eliminaría las líneas del 1 al 10 del archivo.

Creo que todo el mundo debería al menos echar un vistazo a este sed 1 liners.

Tenga en cuenta que esto no funciona para los archivos de registro que una aplicación agrega activamente (como se indica en la pregunta).

sed -i creará un nuevo archivo y 'borrará' el archivo en el que se está escribiendo. La mayoría de las aplicaciones continuarán escribiendo registros en el archivo de registro eliminado y seguirán llenando espacio en disco. El nuevo archivo de registro truncado no se agregará. Esto solo cesará cuando la aplicación se reinicie o se le indique que cierre y vuelva a abrir sus archivos de registro. En ese momento habrá una brecha (registros de registro faltantes) en el nuevo archivo de registro si ha habido alguna actividad registrable entre el uso de sed y el reinicio de la aplicación.

Una forma segura de hacer esto sería detener la aplicación, usar sed para truncar el registro y luego reiniciar la aplicación. Este enfoque puede ser inaceptable para algunos servicios (por ejemplo, un servidor web con altos requisitos de rendimiento y continuidad del servicio)


No, los sistemas operativos como Linux, y sus sistemas de archivos, no prevén la eliminación de datos desde el inicio de un archivo. En otras palabras, el punto de inicio de almacenamiento de un archivo es fijo.

La eliminación de líneas desde el inicio de un archivo generalmente se logra escribiendo los datos restantes en un archivo nuevo y eliminando el anterior. Si un programa tiene el archivo antiguo abierto para escritura, la eliminación de ese archivo se pospone hasta que la aplicación cierre el archivo.

Como señalaron los comentaristas, por las razones dadas en mi oración anterior, generalmente necesita coordinar la eliminación del archivo de registro con los programas que escriben los registros. Exactamente cómo hacer esto depende de los programas. Algunos programas cerrarán y volverán a abrir sus archivos de registro cuando les envíe una señal (por ejemplo, HUP) y esto se puede usar para evitar que los registros se escriban en un archivo de registro "eliminado", sin interrumpir el servicio.

Hay muchas utilidades disponibles para administrar el tamaño de los archivos de registro, por ejemplo logrotate

Algunos programas tienen sus propias utilidades. Por ejemplo, el servidor web Apache incluye una utilidad de rotar registros.


No. Una solución a este problema genérico de crecimiento de archivos de registro es la rotación de registros. Esto implica el movimiento regular (nocturno o semanal, por lo general) de un archivo de registro existente a otro nombre de archivo y comenzar de nuevo con un archivo de registro vacío. Después de un período, los archivos de registro antiguos se desechan.

Consulte:http://www-uxsup.csx.cam.ac.uk/~jw35/courses/apache/html/x1670.htm


Linux
  1. ¿Cómo eliminar líneas duplicadas dentro de un archivo de texto?

  2. ¿Cómo eliminar líneas en blanco de un archivo (incluidos tabuladores y espacios)?

  3. ¿Concatenar líneas basadas en el primer carácter de la siguiente línea?

  4. Bash Script para eliminar el archivo más antiguo de una carpeta?

  5. ¿Cómo quitar el Bom de un archivo Utf-8?

Cómo quitar la contraseña de un archivo PDF en Linux

Cómo quitar líneas de un archivo usando el comando Sed

Cómo quitar (^M) caracteres de un archivo en Linux

Imprima un archivo, omitiendo las primeras líneas X, en Bash

¿Cómo eliminar las líneas que aparecen en el archivo B de otro archivo A?

Eliminar líneas pares o impares de un archivo de texto