É possível seguir um comando (executar repetidamente)? como se seguiria um arquivo usando tail -f?


10

Eu tenho um script que produz um arquivo 'Detail.out'. Eu sei que o script é concluído sempre que o arquivo contém um certo número de linhas (aproximadamente 21025). Então, eu me vejo sentado no prompt de comando em execução:

[me@somewhere myDir]$ wc -l */Detail.out
  21025 A/Detail.out
  21025 B/Detail.out
  21025 C/Detail.out
  12995 D/Detail.out
  10652 E/Detail.out
   3481 F/Detail.out
  21027 G/Detail.out
  21025 H/Detail.out
  21025 I/Detail.out
  ...   ...

Eu costumava tail -fassistir a um arquivo específico, mas gostaria de seguir a saída do wc -l */Detail.outcomando mostrado acima. Isso é possível? Atualmente, estou usando tcshno Ubuntu 11.04, se isso importa.

Respostas:


18

Tente o watchcomando, embora eu suspeite que quase todo mundo tenha escrito sua própria versão uma vez ou outra. (A versão mais barata é while :; do clear; "$@"; sleep 5; done.)


0

Não tenho certeza se você sabe disso, mas também pode redirecionar a saída de um programa para um arquivo. Consulte http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html Assim, outra maneira pode ser simplesmente redirecionar a saída para um arquivo e, em seguida, usar a cauda nesse arquivo, como você já está acostumado a fazer. .

$ find . -name "Detail.out" | xargs wc -l >> detail-out-list.txt

E em outro Terminal você pode executar $ tail -f detail-out-list.txtcomo está acostumado.

Como Celeb observou, deixa algum arquivo em torno do qual você pode querer (inspecionar mais esse arquivo ou ter um histórico) ou não, e nada é executado periodicamente, como watchfaz para você.


Isso não aborda a questão dos OPs, apenas direciona o trabalho para outro comando e requer uma nova camada de coisas para executar e limpar depois.
Caleb

@ Caleb: Não sei ao certo por que essa é uma resposta tão terrível. O arquivo de saída pode estar em / tmp, portanto, não há necessidade de limpá-lo. Eu não acho que a pergunta era "como posso executar um comando repetidamente?" mas "como posso seguir um comando que é executado repetidamente?". Até onde eu posso ver, parece que isso responde à pergunta do OP ... tudo bem, em uma leitura mais cuidadosa, acho que a pergunta é ambígua como atualmente publicada: faz "(execute repetidamente)" significa "(que está sendo executado repetidamente ) "ou" (ou seja, como eu o executo repetidamente?) "?
Iconoclast
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.