“tail -f” mostra o arquivo antigo depois que o arquivo foi rotacionado [duplicado]

4
    

Esta pergunta já tem uma resposta aqui:

    

Eu tenho um script sendo executado continuamente, lendo tail -f /var/log/daemon.log

O problema é que, quando o arquivo /var/log/daemon.log é rotacionado por logrotate , o tail ainda tem "identificador de arquivo" para o arquivo antigo (girado) e não exibe mais o conteúdo do novo arquivo /var/log/daemon.log

Existe alguma maneira de corrigir isso, de modo que tail mostre o conteúdo do novo arquivo, se o arquivo foi girado?

    
por Martin Vegter 22.08.2014 / 13:37

1 resposta

9

Sim. Você está procurando tail -F em vez de tail -f (ou seja, um F maiúsculo em vez de minúsculo). Verifique o tail (1) manpage.

Como alternativa, você pode usar --follow=name --retry , que a página man documenta como a mesma coisa.

(Estes são da cauda do GNU coreutils. Outras caudas podem não ter isso; POSIX não especifica -F , --follow , ou --retry . Se você tiver que trabalhar nesses sistemas, eu sugiro que o Perl < a href="https://metacpan.org/pod/File::Tail"> Arquivo :: Tail .)

    
por 22.08.2014 / 13:50