Ist es möglich, einem Befehl zu folgen (wiederholt ausführen)? wie würde man einer datei mit tail -f folgen?


10

Ich habe ein Skript, das eine Datei 'Detail.out' erzeugt. Ich weiß, dass das Skript immer dann abgeschlossen ist, wenn die Datei eine bestimmte Anzahl von Zeilen enthält (ungefähr 21025). Ich sitze also an der Eingabeaufforderung und führe Folgendes aus:

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

Ich habe früher tail -feine bestimmte Datei angesehen, möchte aber die Ausgabe des wc -l */Detail.outoben gezeigten Befehls verfolgen . Ist das möglich? Ich verwende derzeit tcshin Ubuntu 11.04, wenn das wichtig ist.

Antworten:


18

Versuchen Sie den watchBefehl, obwohl ich vermute, dass fast jeder zu der einen oder anderen Zeit seine eigene Version geschrieben hat. (Die billigste Version ist while :; do clear; "$@"; sleep 5; done.)


0

Sie sind sich nicht sicher, ob Sie das wissen, aber Sie können die Ausgabe eines Programms auch in eine Datei umleiten. Siehe http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html . Eine andere Möglichkeit besteht darin, die Ausgabe einfach in eine Datei umzuleiten und dann den Schwanz für diese Datei zu verwenden, wie Sie es bereits gewohnt sind .

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

Und in einem anderen Terminal können Sie so laufen, $ tail -f detail-out-list.txtwie Sie es gewohnt sind.

Wie Celeb bemerkte, bleibt eine Datei übrig, um die herum, was Sie wollen (um diese Datei weiter zu untersuchen oder um einen Verlauf zu haben) oder nicht, und nichts wird regelmäßig ausgeführt, wie watches für Sie der Fall ist.


Dies geht überhaupt nicht auf die OP-Frage ein, sondern führt die Arbeit nur auf einen anderen Befehl aus und erfordert eine ganz neue Ebene von Dingen, die ausgeführt und bereinigt werden müssen.
Caleb

@Caleb: Mir ist nicht klar, warum dies eine so schreckliche Antwort ist. Die Ausgabedatei könnte sich in / tmp befinden, sodass sie nicht bereinigt werden muss. Ich glaube nicht, dass die Frage lautete: "Wie kann ich einen Befehl wiederholt ausführen?" aber "wie kann ich einem Befehl folgen, der wiederholt ausgeführt wird?". Soweit ich sehen kann, scheint dies die Frage des OP zu beantworten ) "oder" (das heißt, wie führe ich es wiederholt aus?) "?
Bilderstürmer
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.