[bcn-pm] Proceso de estadisticas avanzando

Xavier Noria fxnahashref.com
Dme Maig 18 04:39:49 PDT 2005


On May 18, 2005, at 11:39, Jose Pedro Andres wrote:


>     El tema esta en que no se pueden borrar los archivos de logs (
> porque tendria que reinciar el apache de cada balanceador web para que
> los creara de nuevo ), por lo que lo que me interesaba era usar el
> Tie::File para ir quitando las lineas que ya he procesado ( de esta
> forma, y en teoria, puedo ir recortando el archivo a medida que  
> proceso
> las estadisticas, sin tocar el resto del archivo )
>     Ahora mismo lo que hago es ir haciendo lineas hasta agotar el
> archivo, y truncarlo al final, pero me gustaria hacerlo "por la forma
> mas correcta", que es ir "quitando las lineas que proceso, y dejar  
> el resto.
>

Un archivo abierto de escritura, o bien se cepilla lo que hay al  
abrirlo, o bien se pone en modo "append". En el segundo caso, se  
pueden sobreescribir bytes ya existentes, pero no eliminarlos. Esa es  
la restriccion fundamental a tener en cuenta para lo que quieres  
conseguir.

Por ello, para cargarte las n primeras lineas de un archivo hay en  
realidad que reescribirlo con las restantes. Por ejemplo usando sh  
podriamos hacer:

     #!/bin/sh

     # envia las priemeras 1000 lineas a webalizer
     head -n 1000 logfile | webalizer

     # deja en logfile las restantes sin usar wc -l y tail
     perl -ni -e 'print if $. > 1000' logfile

Mas o menos la idea de base es esa. Preguntaba por la version simple  
con un while porque hacer eso suena MAS costoso ya que has de volver  
a escribir megas de texto a disco por cada 1000 lineas que envies.

Al margen del while (que haria innecesario Tie::File porque la logica  
es sencilla), estas completamente seguro de que Tie::File es el que  
carga la maquina? No es el webalizer ni ninguna otra cosa relacionada  
con ese proceso? Tie::File esta bastante pensado y uno de sus  
objetivos es tratar eficientemente con archivos grandes, es un poco  
raro. Como lo usas exactamente?

-- fxn



Més informació de la llista de correu Barcelona-pm