Você pode usar o relógio para repetir a execução de um comando, portanto, no seu caso
watch -n 1 cat filename
Como monitorar continuamente um arquivo que está sendo continuamente sobrescrito? Especificamente, o arquivo contém uma única linha de texto que um processo em segundo plano está abrindo e reescrevendo repetidamente.
Esperava que tail -F
funcionasse, mas não funciona.
Atualização : eu esperava que isso não fosse pertinente, mas estou executando o Mac OS X 10.5.8.
Existem maneiras melhores de fazer isso, mas funciona
while true ; do echo -n "'date +%s:' " >> file.log ; cat file >> file.log ; done
O arquivo file.log irá crescer ... rapidamente ...
Se você precisar de mais recursos, como verificar se o conteúdo do arquivo é igual ao conteúdo anterior, expanda-o em um script. Apenas comente abaixo e eu ajudo.
Em sistemas BSD (e acredito que a maioria dos outros sistemas) tail -f
será redefinido para o início do arquivo se ele ver que o arquivo foi truncado (isso soa exatamente como o comportamento desejado).
Nos sistemas Linux, o mesmo acontece, mas pelo menos na caixa Debian eu tenho um "intervalo de sondagem", então você precisa dizer para ele não dormir entre verificações do arquivo ( tail -s 0 -f ...
) para para notar o truncamento, caso contrário coisas estranhas acontecem (se o arquivo é do mesmo tamanho ou menor quando está escrito você não obtém saída, se é maior você obtém tudo após o marcador atual de contagem de bytes da cauda, etc. cauda de impementação para ver como ela se comporta)
Como uma alternativa nos sistemas Linux e BSD, a cauda tem uma opção -F
(que é como -f
, mas verifica se o arquivo foi girado - ou seja, o nome aponta para um número de inode diferente). Isso não ajudará se o arquivo estiver sendo truncado, em vez de desvinculado e substituído.
Coorquinho watch
:
while true
do
clear
cat file
sleep 1
done
Altere o cat
se o arquivo for maior que uma tela para algo como:
tail -n $((LINES - 4)) file
Você pode adicionar condicionais para verificar uma alteração no registro de data e hora do arquivo, etc.
Você pode usar a API do FSEvents e um pequeno script para monitorar o arquivo (ou, mais precisamente, o diretório que contém o arquivo arquivo).