Est-il possible de suivre une commande (exécutée à plusieurs reprises)? comme on suivrait un fichier en utilisant tail -f?


10

J'ai un script qui produit un fichier 'Detail.out'. Je sais que le script est terminé chaque fois que le fichier contient un certain nombre de lignes (environ 21025). Je me retrouve donc assis à l'invite de commande en cours d'exécution:

[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
  ...   ...

J'ai utilisé tail -fpour regarder un fichier spécifique, mais je voudrais suivre la sortie de la wc -l */Detail.outcommande ci-dessus. Est-ce possible? J'utilise actuellement tcshdans Ubuntu 11.04 si cela importe.

Réponses:


18

Essayez la watchcommande, bien que je soupçonne que presque tout le monde a écrit sa propre version à un moment ou à un autre. (La version bon marché est while :; do clear; "$@"; sleep 5; done.)


0

Je ne sais pas si vous le savez, mais vous pouvez également rediriger la sortie d'un programme vers un fichier. Voir http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html Ainsi, une autre façon pourrait être de simplement rediriger la sortie vers un fichier puis d'utiliser la queue sur ce fichier comme vous êtes déjà habitué à le faire .

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

Et dans un autre terminal, vous pouvez exécuter $ tail -f detail-out-list.txtcomme vous en avez l'habitude.

Comme Celeb l'a noté, cela laisse un fichier autour duquel vous pouvez ce que vous voulez (pour inspecter davantage ce fichier ou pour avoir un historique) ou non et rien n'est exécuté périodiquement comme watchpour vous.


Cela ne répond pas du tout à la question des OP, cela se contente de renvoyer le travail à une autre commande et nécessite une toute nouvelle couche de choses à exécuter et à nettoyer ensuite.
Caleb

@Caleb: Je ne comprends pas pourquoi c'est une réponse si terrible. Le fichier de sortie peut être dans / tmp, il n'est donc pas nécessaire de le nettoyer. Je ne pense pas que la question était "comment puis-je exécuter une commande à plusieurs reprises?" mais "comment puis-je suivre une commande qui est exécutée à plusieurs reprises?". Donc, pour autant que je puisse voir, il semble que cela réponde à la question de l'OP ... d'accord sur une lecture plus attentive, je suppose que la question est ambiguë comme actuellement affichée: ) "ou" (c'est-à-dire, comment puis-je l'exécuter à plusieurs reprises?) "?
iconoclaste
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.