La supervisión de varios archivos con la cola de Unix puede no funcionar como usted espera

La supervisión de varios archivos con la cola de Unix puede no funcionar como usted espera

Por 23 de febrero, 2017Ingeniería

por Allen Fung, Senior Software Engineer

"tail-F" es comúnmente usado para monitorear archivos para actualizaciones.

Así es como se puede usar tail para monitorear varios archivos a la vez.

$ tail-F archivo1 archivo2

El problema con el comando anterior es que el texto escrito a archivo1 y archivo2 puede no ser vaciado al disco en nuevos límites de línea. Como resultado, el texto de un archivo podría ser empalmado en texto del otro archivo en la salida de tail.

Este es un ejemplo del problema. Suponga que lo siguiente se escribe en archivo1.

line_1
line_2
line_3

Además, suponga que lo siguiente se escribe en archivo2.

LINE_A
LINE_B
LINE_C

Si el texto no se vuelca en los límites de línea nuevos, será posible obtener la siguiente salida de tail.

lineLINE_A
_1
LINE_B
line_2
LINE_C
line_3

Como se puede ver, "LINE_A" se empalma en "line_1", lo que resulta en "lineLINE_A" en la primera línea. Aquí hay algunas maneras de resolver el problema anterior.

  1. Ejecutar múltiples colas en paralelo y canalizar la salida de cada cola a grep. Necesitará usar la opción en grep para imprimir sólo en nuevos límites de línea.

  2. Escribe una cola nueva que sólo se imprime cuando recibe una línea completa de un archivo.

  3. Modifique la aplicación que generó los archivos de registro para crear sólo un único archivo de registro. Deberá asegurarse de que el texto se vuelca al archivo único en los límites de línea nuevos.

Aquí está el código para implementar (1) arriba.

$ VI multi-tail.sh
#!/bin/sh

# Cuando esto salga, salga de todo el proceso de fondo también.
SALIR de la trampa ' matar $ (Jobs-p) '

# Iterar a través de cada uno de los nombres de archivo dados
para archivo en "$ @"
Hacer
  Archivo de la cola en el fondo.
  cola-F $File | grep-línea-buffered "" &
Hecho

espera. hasta CTRL + C
Esperar

Dejaré que el lector implemente (2) y (3).

¡ Gracias por leer!

Sobre ShareThis

ShareThis ha desbloqueado el poder del comportamiento digital global sintetizando los datos de participación social, interés e intención desde 2007. Gracias al comportamiento de los consumidores en más de tres millones de dominios globales, ShareThis observa las acciones en tiempo real de personas reales en destinos digitales reales.

Suscríbase a nuestro boletín de noticias

Recibe las últimas noticias, consejos y actualizaciones

Suscribirse

Contenido relacionado