O que faz o nome do diretório tail -f?

4

Por engano, executei o seguinte comando no terminal:

tail -f /logs/applications/logs*

Eu recebi a seguinte saída:

tail: file shrunk!
Error 0

Eu não sei exatamente o que aconteceu. Eu não tenho acompanhado o número de arquivos no diretório por um tempo. Alguém poderia, por favor, explicar o que exatamente aconteceu, e eu perdi algum arquivo?

Editar:

Não tenho certeza se é coincidência ou não, mas depois que eu executei o código, contei o número de arquivos no diretório, e eram 10!

Primeira vez que o número 10 me deixou paranóico ...

    
por debal 15.04.2014 / 12:29

2 respostas

7

I am not sure what exactly happened.

O que aconteceu foi que o arquivo foi girado por um aplicativo externo. Isso é normal. Utilitários como logrotate giram arquivos de log, ou seja, o conteúdo do arquivo de log existente é movido para outro arquivo e o existente é apagado antes que um aplicativo comece a gravar nele novamente.

Quando tail determina que o tamanho do arquivo rastreado foi reduzido, ele imprime a mensagem observada e continua rastreando o arquivo.

Citações da seção tail invocation de Manual do GNU coreutils :

No matter which method you use, if the tracked file is determined to have shrunk, tail prints a message saying the file has been truncated and resumes tracking the end of the file from the newly-determined endpoint.

    
por 15.04.2014 / 12:43
2

Não, você não perdeu nenhum arquivo, pois o comando tail mostra apenas o final dos arquivos.

Passar /logs/applications/logs* para tail é o mesmo que passar vários arquivos / pastas (qualquer coisa que corresponda a /logs/applications/logs* padrão). Como esse padrão pode ser correspondido também por diretórios, nesses casos tail não funcionará.

    
por 15.04.2014 / 12:33

Tags