Como fazer um `tail -f` de arquivos rotacionados em log?


106

Em um sistema de longa duração, geralmente tenho um terminal com

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

ou algo assim aberto.

Mas, de tempos em tempos, tenho que reiniciar esse comando, porque nenhuma nova mensagem é exibida.

Suponho que isso ocorra devido ao trabalho rotativo de log que substituiu o arquivo de log tail -festar 'assistindo'.

Como evitar esses problemas de reinicialização?

Posso invocar para tailque ele observe o processo de rotação e faça a coisa certa?

(Percebo esse problema em um sistema Ubuntu 11.04 que usa rsyslogdpor padrão.)


Respostas:


162

Use a -Fopção:

tail -F /var/log/kern.log

A -Fopção informa tailpara rastrear alterações no arquivo por nome do arquivo, em vez de usar o número do inode que muda durante a rotação. Ele também continuará tentando abrir o arquivo se ele não estiver presente.


7
Incrível, sim, eu sou. (apenas para constar, esta é uma opção do GNU tail - onde o GNU tail é obviamente o padrão no Ubuntu).
maxschlepzig

Você está certo: - / Eu não percebi que o Ubuntu na sua pergunta era apenas um exemplo.
andcoz

não é um problema - eu apenas comentei a integridade (às vezes eu só quero olhar o que é POSIX e o que não é). A questão realmente era sobre o Ubuntu.
maxschlepzig

11
É tail -F /var/log/kern.logequivalente a tail -f --follow=name --retry /var/log/kern.log?
Basj

11
@Basj - de acordo com man7.org/linux/man-pages/man1/tail.1.html é equivalente
andrej
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.