Limitar tamaNo limitado (buffer circular logs)

Daniel Serpell daniel_serpell en yahoo.com
Mar Mar 29 15:23:27 CLT 2005


Hola!

El Tue, Mar 29, 2005 at 01:20:19PM -0300, Federico Petronio escribio:
> 
> Necesito un archivo (que será utilizado almacenar logs) que tenga la
> propiedad de nunca exceder cierto tamaño prefijado, que cuando llegue a
> su tamaño máximo se comporte como un buffer circular (es decir que se
> eliminen los datos más antiguos para dejar entrar los nuevos). El
> comportamiento sería algo así como los logs en memoria de, por ejemplo,
>  routers o firewalls Cisco.

Un archivo es sólo eso, un archivo.

Tu pregunta es como decir "¿existe un vaso que al echarle agua bote lo
que tenía antes por abajo?". Y la respuesta es clara: no es un vaso
lo que quieres.

Lo que tu deseas en realidad no es muy útil para los archivos de
registro, por ejemplo:

 * Si un programa se vuelve loco tirando mensajes, justo los mensajes
   importantes (de antes de volverse loco) no van a estar disponibles.
 
 * Si el sistema se cae, es difícil lograr que un buffer circular
   mantenga consistencia, ya que los mensajes nuevos y antiguos
   comparten el mismo espacio.
 
Es por algo que se usa el esquema de rotar archivos por fechas, de
esta manera los registros antiguos estan disponibles comprimidos en
caso de necesitarse y no se borran hasta pasado un tiempo razonable.

Y un sistema de rotación de archivos es al final equivalente a un
gran buffer circular.

Si lo que quieres es un archivo donde se vean los últimos mensajes
de un registro existente, puede bastar un simple "tail -[numero de
lineas] /mi/archivo/de/registro".

        Daniel.



Más información sobre la lista de distribución Linux