Como faço para deixar um arquivo de log e continuar seguindo quando a última muda de data?

7

Estou usando o RHEL 4.

O% normaltail -F file_name*.log não é atualizado quando o tempo passa para 0000.

Veja o que tentei até agora na pesquisa na Web, e ambos tentam usar o aninhado tail :

tail -F $(ls -tr file_name*.log | tail -n 1)

tail -F $(fine . -maxdepth 1 -type f -printf "%T@ %p\n" | sort -n | tail n 1 | cut -d' ' -f 2-)

Nada disso muda para novos arquivos. O velho e simples tail -F file_name*.log funciona em meus pequenos casos de teste (enquanto os 2 acima não funcionam), mas não funciona quando estou seguindo um arquivo de log real.

    
por Ken Oh 03.11.2012 / 03:29

3 respostas

4

Isso não funciona (não funciona) - as sub-shells que você está usando para determinar o arquivo mais recente só são executadas uma vez. O glob não funciona porque o shell avalia o curinga apenas uma vez.

Uma maneira de lidar com isso seria usar 'watch' para executar a coisa toda, mas isso interromperia a saída a cada tantos segundos.

    
por 03.11.2012 / 05:07
4

tail monitora um único arquivo ou, no máximo, um conjunto de arquivos determinado ao ser iniciado. No comando tail -F file_name*.log , primeiro o shell expande o padrão curinga, então tail é chamado em qualquer arquivo existente no momento.

Para monitorar um conjunto de arquivos baseado em wildcards, você pode usar multitail .

multitail -iw 'file_name*.log' 1
    
por 04.11.2012 / 01:33
1

Você provavelmente terá que escrever algo para seguir a cauda. Ou configure seu sistema para não rolar logs (ou esse log) à meia-noite. De qualquer maneira, o filehandle do logfile de cauda é redefinido quando é rolado.

    
por 03.11.2012 / 05:54

Tags