Abra um diretório e deixe-o se atualizar usando “tail -f”

5

Semelhante à minha última pergunta: Abrir um texto arquivo e deixe-o atualizar-se ; Existe uma maneira que eu poderia fazer o mesmo, mas para uma pasta?

Como tenho uma pasta de log, posso usar tail -f com uma pasta?

ou seja,

$ tail -f /tmp/logs/

Eu sei que isso não funcionará, mas existe uma alternativa?

Estou usando o RHEL 5.10

    
por Kevdog777 12.09.2014 / 16:26

3 respostas

6

Sim, existe uma alternativa, depois de um pouco de pesquisa, vi que você pode usar:

$ watch "ls -l"

Você precisa estar na pasta que deseja watch .

Além disso, você pode usar tail -10 no final:

$ watch "ls -l | tail -10"

O comando digita ls a cada 2 segundos e filtra a saída para os 10 últimos arquivos.

Se você ler o link de referência, ele terá algumas ótimas dicas, também se você não conseguir lembrar o comando acima, você pode adicionar o seguinte ao seu arquivo .bashrc:

alias taildir='watch "ls -l | tail -10"'

Assim, você pode digitar taildir em vez de escrever o comando completo novamente.

Referência: Como codificar um diretório .

    
por 12.09.2014 / 16:26
5

Não tenho certeza do que você quer exatamente. Talvez você precise de inotifywait do pacote inotify-tools (no Ubuntu). Esta é apenas uma solução do Linux, infelizmente. Por exemplo:

$ inotifywait -m -e create -e modify -r /var/log
Setting up watches.  Beware: since -r was given, this may take a while!
Watches established.
/var/log/ CREATE test-for-inotify1.txt
/var/log/upstart/ CREATE test-for-inotify2.txt
/var/log/ MODIFY test-for-inotify1.txt
/var/log/ MODIFY auth.log
/var/log/ MODIFY syslog
/var/log/ MODIFY auth.log

Veja man 1 inotifywait para ver mais eventos e opções.

ADICIONAR:

Além disso, se você precisar monitorar apenas alguns arquivos, use tail -f com vários nomes de arquivos:

$ tail -f 1.txt 2.txt 3.txt
==> 1.txt <==

==> 2.txt <==

==> 3.txt <==

==> 1.txt <==
new string in 1.txt

==> 3.txt <==
add string to 3.txt

==> 2.txt <==
And to 2.txt
^C
    
por 12.09.2014 / 17:31
1

Que tal este comando sem a necessidade de watch ou inotify ?

ls -drt /var/log/* | tail -n5 | xargs tail -F

tail -n5 localiza os registros atualizados com mais frequência em 5 (-n5) em /var/log e, em seguida, segue uma sequência multilateral desses arquivos de log. No entanto, você pode remover isso se precisar monitorar todos os arquivos em tempo real.

Referências

Siga os arquivos de log atualizados mais recentemente

    
por 14.09.2014 / 02:44