Forums:
cOMO estan colegas ;) recurro a ustedes ya que en estas dos semanas he estado tratando de leer y procesar las lineas de un log (nagios.log), para ello hice uso del comando awk, tail y getline:
awk 'BEGIN {"tail -f nagios.log" | getline; print $5}' > salida
El problema es que no me esta redireccionando el resultado de print $5 al archivo salida.
pero si yo realizo lo siguiente:
awk 'BEGIN {"tail -n 5 nagios.log" | getline; print $5}' > salida
BINGO.!!! si funciona. :)
:( pero lo que yo necesito es que procesar continuamente la salida del log nagios.log mediante tail -f nagios.log y que esto se me vaya almacenando en el archivo salida
PORFA ALGUIEN ME PODRIA AYUDAR, no se en que estoy fallando o que me falta, cualquier sugerencia es muy bien acogida....
porfa ya estoy empezando a desesperarme
¿Y qué tal algo así?: $ tail
¿Y qué tal algo así?:
$ tail -f nagios.log | awk '{print $5}' | tee salida
Hola amigo primeramente
Hola amigo primeramente gracias por tu interes a mi pregunta, pues la verdad acabo de probar la sugerencia que me diste.
pero tengo el mismo problema, no se esta redireccionando la salia al archivo salida.
A lo que mando a ejecutar la siguiente linea desde el shell:
tail -f nagios.log | awk '{print $5}' | tee salida
sucede que el archivo salida se genera, pero al abrirlo este se encuentra vacio.
La verdad esto como que ya me tiene cabezon...
estoy pensando que el problema puede ser debido al comando tail -f ya que este se encuentra ejecutando continuamente.
Estado leyendo algunos manuales, y por alli encontre que se podia usar el comando getline para procesar la linea actual, pero de igual manera la probe, pero sigo teniendo el mismo problema.
e aqui el codigo que use:
awk 'BEGIN {"tail -f nagios.log" | getline; print $5}' > salida
Espero que ustedes puedan darme una manita de gato o ayudarme con alguna otra idea, todo sera muy bien acogido.....
edisonjavier85
Creo que tienes problemas de flushing
Estimado, creo que tienes problemas de flushing.
Probé "tail -f /xxxx/xxx.log | awk '{print $5}'>salida". Le hice tail -f a salida y se ve que se escribe. Ahora, mi xxx.log crece a razón de 1.2 GB por hora, por lo que el flushing se hace rápido. Supongo que tu log no crece muy rápidamente. Investigando vi que podrías forzar el flushing en AWK, pero la eficiencia de esto queda a tu criterio.
Forzando el flushing quedaría así:
tail -f /xxxx/xxx.log | awk '{print $5;fflush("")}' >salida.
Saludos
Hola amigo, le agradezco
Hola amigo, :) le agradezco mucho por su valioso aporte, pues lo probe y si tengo datos en el archivo de salida "salida", ahora el log con el cual estoy trabajando es el de nagios.log, no se si tu hayas trabajado anteriormente con esta herramienta de monitoreo de servicios??. En fin Muy agradecido por su ayuda estimado amigo,,, :D
edisonjavier85