$ tail -f testfile
o comando deve mostrar as entradas mais recentes no arquivo especificado, em tempo real, certo? Mas isso não está acontecendo. Corrija-me, se o que pretendo fazer está errado ...
Criei um novo arquivo "aaa", adicionei uma linha de texto e a fechei. Em seguida, emitiu este comando (primeira linha):
$ tail -f aaa
xxx
xxa
axx
as últimas três linhas são o conteúdo do arquivo aaa. Agora que o comando ainda está em execução (desde que o usei -f
), abri o arquivo aaa por meio da GUI e comecei a adicionar mais algumas linhas manualmente. Mas o terminal não mostra as novas linhas adicionadas no arquivo.
O que há de errado aqui? O tail -f
comando mostra apenas novas entradas se elas forem gravadas apenas pelo sistema? (como arquivos de log etc)
fonte
$ tail -F filename
comando o tempo todo, em vez de$ tail -f filename
certo?lsof
pode mostrar isso acontecendo - por exemplolsof -Fpcftni
, mostraria que o inode que está sendo seguidotail
não é mais o mesmo que o editor abriu.Seu editor possui seu próprio buffer para o arquivo. Quando você modifica o texto no editor, nada é gravado no próprio arquivo.
Quando você salva suas alterações, é possível que o editor exclua o arquivo antigo e crie um novo.
tail -f
ainda estará conectado ao arquivo excluído, para que não mostre nada de novo.fonte
tail
"atualizar" a cada 1 segundo por padrão, não em tempo real.Tente com isso (você precisa do bash4):
touch ~/output.txt
etail -f ~/output.txt
.for i in {0..100}; do sleep 2; echo $i >> ~/output.txt ; done
fonte
echo $i >> ~/output.txt
? Além disso, esta resposta perde o objetivo da pergunta.tailf
tem uma implementação baseada em inotify. Portanto, ele será atualizado em tempo real.tailf
, mastail
usa inotify ?. Eu não sabiatailf
. A página de manual da cauda mostra o padrão de 1 segundo para-s
.tail
seguido e agora também está usando o inotify quando disponível.tailf
não está pesquisando, apenas dorme, quando não há atividade no arquivo.tail -f
mostra alguma atividade (consulte astrace
saída).