Ich möchte einfach die Anzahl der Zeilen pro Minute berechnen, die zu einer Protokolldatei hinzugefügt wurden.
Ich möchte auch die Zählung für jede Sekunde speichern.
Was ich brauche, ist die Ausgabe des folgenden Befehls als Liste, die jede Sekunde aktualisiert wird:
watch -n1 'wc -l my.log'
Wie kann man das 'Update' des 'Watch'-Befehls als Liste ausgeben?
wait
- versuchen Sie es einfachwatch -n 1 "sleep 5"
.watch
es nützlich ist, aber es gibt Ihnen nicht einmal das, weshalb Ihre Lösung so gut ist wie eine auf der Uhr basierende, aber auch nicht die Frage, wie schnell eine Protokolldatei wächst , mit großer Genauigkeit beantwortet.watch
hat eine-p
Option, die dies nach Möglichkeit korrekt ausführt (natürlich können Sie keinen Befehl ausführen, der alle 1 Sekunde 5 Sekunden dauert, wenn Sie nicht mehrere gleichzeitig ausführen dürfen). Ich weiß, ich habe es geschrieben :-PEine alte Frage, aber ich habe gerade eine sehr einfache Antwort gefunden:
Dadurch wird
wc
jede Sekunde ausgeführt, die Ausgabe der Datei statistics.log hinzugefügt und auch auf dem Bildschirm angezeigt.So erhalten Sie eine mit Zahlen gefüllte Datei, die die aufeinanderfolgende Anzahl von Zeilen darstellt
my.log
.quelle
watch "($MYCMD | tee -a $MYLOG)"
nichtwatch "($MYCMD)" | tee -a $MYLOG
. Wenn Sie das falsch verstanden haben, wie ich, wird die Ausgabe sehr, sehr verwirrend sein. Eine andere Sache, die Sie hier beachten sollten, ist, dass dieser Befehl nicht standardmäßig den Zeitstempel der Ausführung jedes Befehls hinzufügt, sodass die Antwort mit der Schleife möglicherweise noch besser für Sie funktioniert.Wie wäre es mit
quelle
Versuche Folgendes:
quelle
Ich bin auf diese Frage gestoßen, als ich versucht habe, eine bessere / protokollierte Ausgabe von zu erhalten
du -sh $data_path
. Ich habe das hier gefundene Muster "while command, do sleep" verwendet, aber ein komplexes AWK, um die gewünschte Ausgabe zu erhalten.Ich habe das eigentlich als Oneliner gemacht, weshalb es Semikolons gibt. Aber um es lesbar zu machen, habe ich es ausgebrochen. Die Ausgabe sieht folgendermaßen aus:
quelle
Sie können ein Skript erstellen, das dies für Sie erledigt. Ich rief meine an
keep
(mach weiter) und legte sie auf denbin
Weg.Das ist mein Drehbuch:
quelle
"$@"
, um den Befehl (Argumente) anstatt ohne Anführungszeichen auszuführen$*
. Auf diese Weise behält die Shell Argumente in Anführungszeichen usw. so bei, wie es der Benutzer erwarten würde. FTFY.