¿Cómo hacer un 'tail -f' de archivos rotados de registro?

106

En un sistema de larga ejecución, generalmente tengo un terminal con

$ tail -f /var/log/kern.log

o algo como esto abierto.

Pero de vez en cuando tengo que reiniciar dicho comando porque ya no se muestran mensajes nuevos.

Supongo que esto se debe a que el trabajo de rotación de registros que ha reemplazado el archivo de registro tail -festaba 'mirando'.

¿Cómo puedo evitar estos problemas de reinicio?

¿Puedo invocar de tailmodo que note el proceso de rotación y haga lo correcto?

(Noto este problema en un sistema Ubuntu 11.04 que usa rsyslogdde forma predeterminada).

maxschlepzig
fuente
2
Relacionado: unix.stackexchange.com/questions/196168/…
Volker Siegel

Respuestas:

162

Use la -Fopción en su lugar:

tail -F /var/log/kern.log

La -Fopción le dice tailque rastree los cambios en el archivo por nombre de archivo, en lugar de usar el número de inodo que cambia durante la rotación. También seguirá intentando abrir el archivo si no está presente.

andcoz
fuente
77
Impresionante, sí, lo soy. (solo para el registro, esta es una opción de GNU tail, donde GNU tail es, por supuesto, el predeterminado en Ubuntu).
maxschlepzig
Tienes razón: - / No me di cuenta de que Ubuntu en tu pregunta era solo un ejemplo.
andcoz
no es un problema en absoluto: acabo de comentar la integridad (a veces solo quiero ver qué es POSIX y qué no). La pregunta era más o menos sobre Ubuntu.
maxschlepzig
1
¿Es tail -F /var/log/kern.logequivalente a tail -f --follow=name --retry /var/log/kern.log?
Basj
1
@Basj - según man7.org/linux/man-pages/man1/tail.1.html es equivalente
andrej