tail -f não acompanha mudanças no arquivo


14

Eu estava olhando recentemente em usar tail -fpara monitorar alguns arquivos de texto assim: tail -f /var/sometext.

No entanto, quando fiz alguns testes, ele não parece funcionar. O que fiz foi criar um novo arquivo e executar: tail -f /home/name/textEm seguida, abri o log no vim e fiz algumas edições, salvei-o e parece que o tail não está "vendo" a alteração.

O estranho é que correr echo "hello" >> /home/name/textparece funcionar bem (a cauda vê a mudança). Eu li em algum lugar que isso tem algo a ver com descritores de arquivos e novos inodes sendo criados ao salvar um arquivo.

Alguém pode explicar isso para mim? Não entendi direito como isso realmente funciona, mas tenho uma ideia do que são os descritores de arquivo.

Respostas:


29

-fsegue por inode. Se você deseja seguir o nome, como quando um programa recriar completamente o arquivo, use-o -F.


Legal, eu nunca soube disso. Vale a pena ler as páginas de manual dos utilitários mesmo (especialmente?) Se você usá-los o tempo todo!
Lyle

1

tail -f observa o final do arquivo e, quando o final do arquivo é movido, ele imprime o novo conteúdo e aguarda o final do arquivo se mover novamente. Em outras palavras, as alterações no meio do documento não serão encontradas pela cauda -f, apenas anexando.


-1

Na verdade, a verdadeira história é:

tail -f monitora a memória, não o disco. Mas ele não pode acessar a memória protegida, como edições em um arquivo que abriu um editor de texto.


O tail -fcomando opera em um arquivo (descritor de arquivo após abrir o arquivo). Embora, de fato, as novas modificações do arquivo ainda estejam na memória (buffers, cache), isso não importa. tailainda acessa o arquivo através do descritor de arquivo. Não importa como o arquivo é modificado. --- A resposta de Ignacio Vazquez-Abrams está correta - o editor não modifica o arquivo atual (que é aberto tail), salva as alterações em um novo arquivo com o mesmo nome que o antigo.
pabouk
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.