tail -f pero aspira el contenido del archivo primero (también conocido como `cat -f`)

9

Necesito mostrar el archivo completo antes de rastrearlo para detectar nuevos cambios, no solo las últimas 10 líneas (sí, sé que no es una cola conceptual). En otras palabras, algo como cat -flo haría, si alguna vez existiera. El hombre de Tail no me da ninguna idea. La única opción que veo en este momento es combinar de alguna manera cat todo menos las últimas 10 líneas y la salida de cola .

¿Alguna pista, por favor?

Om nom nom
fuente
3
cat $f && tail -n0 -f $fviene a la mente, y revisar la página de manual que parece tail -c0 -f $ftambién podría hacer lo que desea (y ser mejor porque no crea una condición de carrera entre los dos procesos donde los datos escritos podrían ignorarse). No tengo acceso a un sistema Linux en este momento, pero ¿alguno de los dos hace lo que quiere?
un CVn
Esto es útil y acabo de agregar dicha característica a un lenguaje de programación: un "flujo de cola" que puede leer un archivo normalmente de principio a fin, y luego entra en modo "cola -f" al final, y también puede notar que el archivo fue reemplazado por uno más corto o truncado, y siga eso. Necesita esto para poder hacer cosas como procesar registros existentes (ponerse al día con una acumulación) y luego comenzar a procesar nuevas entradas.
Kaz

Respuestas:

14

Aquí hay una forma de hacerlo:

tail -f -n+0 /var/log/messages

No parece haber ninguna diferencia entre a +0y a +1, por lo que esto sería equivalente:

tail -f -n+1 /var/log/messages
slm
fuente
2
Parte relevante de la página del manual (ahorre a la gente escribir) ... -n, --lines = K genera las últimas K líneas, en lugar de las últimas 10; o use -n + K para generar líneas que comiencen con el Kth
hedgehog