Cómo fusionar la salida de dos files de logging en ejecución en time real

He estado parsing cómo funciona un controller USB de Linux utilizando dos methods dispares:

  1. examina la salida de usbmon , que es una vista de volcado hexadecimal de lo que se envía "por cable".
  2. añadiendo printk() al origen del module del controller del núcleo y volviéndolo a cargar en el núcleo.

El resultado de estos methods está disponible para cat /sys/kernel/debug/usb/usbmon/1u y cat /var/log/kern.log respectivamente.

Lo que ahora quisiera hacer ahora es fusionar estos dos files en time real, así puedo ver los posts de logging de printk() que he insertado en el controller del kernel intercalados con las líneas de hex que se envían a través del cable. Por ejemplo, podría poner una printk() al comienzo y al final de un fragment del código del controller que sé que envía datos USB, y quiero poder ver el hex (desde el usbmon que se envió entre, por ejemplo,

Ingresando la function sendImportantUSBData () // desde el código del controller printk ()
0a ff bbbb ac 0993 b3332 // desde el logging usbmon
Salir de la function sendImportantUSBData () // desde el código de controller printk ()

Sé que tail puede mostrar las últimas n líneas de un solo file. También sé que la herramienta multitail puede hacer algo de fusión, aunque no vi ningún detalle relevante con respecto a la sensibilidad de synchronization y qué efecto tiene en la precisión de order de línea combinada. ¿Existe una herramienta adecuada para lo que he descrito que, o bien a) realiza una fusión precisa de los loggings cronológicos o b) permite especificar un intervalo de time relativamente pequeño para cuando se debe realizar la fusión? En este último caso, probablemente pueda insert sentencias sleep en el código del controller en puntos críticos para asegurarme de que la herramienta de fusión tenga time para leer mi salida printk() antes de que el controller avance a la siguiente transacción USB que generaría más hex desde usbmon .

¿Qué tal tail -F /sys/kernel/debug/usb/usbmon/1u /var/log/kern.log ? Eso 'seguirá' el resultado de ambos files e imprimirá un encabezado corto cuando se muestre la salida de cada otro file.

Demasiado fácil si no quieres una progtwigción extensa,

Supongamos que está mezclando de log1 y log2 , lo que da como resultado el log :

Supervise log1 en segundo plano y anexe los cambios al log tail -f log1 >> log &

Inicie otra supervisión de process en log2 tail -f log2 >> log &

Para testificar, testing

echo ok1 >> log1; echo ok2 >> log2

Ahora, si revisas el log , obtendrás

ok1

ok2

incluso yo estaba buscando este ejemplo … Lo he usado con un propósito diferente y estoy contento con el resultado. He networkingirigido el resultado a un file como este: tail -F / sys / kernel / debug / usb / usbmon / 1u /var/log/kern.log >> tail.output y tres veces por segundo me estoy fusionando salida de dos loggings diferentes en time real. Muchas veces jippie 🙂