• Publicidad

Limpiar archivos log con Perl

¿Eres administrador de sistemas? Este foro es para todos aquellos temas relacionados con el uso de Perl para administración de sistemas.

Limpiar archivos log con Perl

Notapor Omarg51 » 2013-02-01 23:06 @004

Buenas,

Quería consultarles si era asumible lo siguiente:
quiero realizar un sistema de respaldo automático, que pueda rotar toda el directivo /var/log cada cierto tiempo.

La idea es que el disco del sistema principal se mantenga con capacidades constante evitando saturación por poca capacidad.

Entonces exactamente lo que quiero hacer es que mediante un script .pl pueda hacer un tratamiento a los archivos, es decir, al capturar archivo por archivo poder abrirlo, limpiar el log y cerrar el archivo. Obviamente este proceso es posterior al realizar el copy() de manera que los log queden respaldados y luego los directorio y archivos de log queden limpios.

¿Con Perl podría realizar esto?

Una vez teniendo la lectura
Sintáxis: [ Descargar ] [ Ocultar ]
  1. @FILES = readdir(DIR); 

y a cada archivo le puedo hacer esto.

Agradecería la información.

Saludos cordiales.
Omarg51
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2013-01-29 12:09 @548

Publicidad

Re: Limpiar archivos log con Perl

Notapor explorer » 2013-02-01 23:50 @035

Sí, naturalmente que puedes realizar todas esas operaciones con Perl.

Ahora bien... desde hace años, en casi todas las distribuciones Linux, vienen equipadas con un software que se llama logrotate, que realiza esas operaciones de forma muy cómoda.

Y, además, tiene en cuenta un problema que no has planteado en tu cuestión: los archivos de registro (log)
son escritos por los programas servidores o dæmons. Si tu, con tu programa, en un momento dado, modificas el archivo de registro que estos programas están actualizando, puedes llevarte la sorpresa de que, aunque los dejes vacíos, no empezarán a escribir en ellos desde cero, sino desde la última posición que conocían. Eso quiere decir que hay que informar a esos programas de que ha ocurrido un cambio en los log y que deben, o bien crearlos desde cero, o bien comenzar a escribir en ellos desde el principio.

En este ejemplo verás que se le envía una señal HUP al samba para indicarle esa circunstancia.

Otro ejemplo, en mis servidores, tengo este archivo que define las políticas de logrotate para los registros de actividad del Apache:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
/var/log/apache2/*.log {
        weekly
        missingok
        rotate 200
        compress
        delaycompress
        notifempty
        create 644 root adm
        sharedscripts
        postrotate
                /etc/init.d/apache2 reload > /dev/null
        endscript
}
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
que quiere decir:
"Rota los archivos /var/log/apache2/*.log -elimina el último archivo de registro comprimido, comprime el log .1, y renombra el actual .log a .log.1-, semanalmente, sin importar si faltan archivos intermedios, hasta un máximo de 200 registros históricos, con un archivo .1 intermedio, excepto si son archivos vacíos, y crea un nuevo log con permisos 644 con propietario root y grupo adm, y cuando hayas terminado con todos, mándale un comando reload al apache, para que comience a escribir en el nuevo registro".

Realizar toda esta operación puede llevarle mucho tiempo, pero no se perderá información, ya que el Apache seguirá escribiendo su actividad en los archivos log, que se estarán renombrando a log.1. Solo cuando le enviemos un reload, comenzará a escribir en los .log normales.

Pero en Perl, sí, sí que se puede, pero hay que hacer el programa, desde luego.

Quizás no quieras implementar toda la funcionalidad de logrotate en Perl, y con unas pocas opciones te sirva, pero ten en cuenta lo que te he dicho de notificar a los programas el cambio que acabas de hacer a sus correspondientes archivos log.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Administración

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados