Wie Messe ich die Dauer in Sekunden in ein shell-Skript?
Möchte ich herausfinden, wie lange eine operation dauert in einer Linux-shell-Skript. Wie kann ich dies tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Möchte ich herausfinden, wie lange eine operation dauert in einer Linux-shell-Skript. Wie kann ich dies tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit dem time-Befehl, wie andere vorgeschlagen haben, ist eine gute Idee.
Andere Möglichkeit ist die Verwendung des magic built-in Variablen $SEKUNDEN, die enthält die Anzahl Sekunden, seit das script gestartet ausführen. Sie können sagen:
Ich denke, das ist bash-spezifisch, aber da bist du auf Linux, ich nehme an, du bist mit bash.
SECONDS
Stoppt es eine spezielle Bedeutung hat). Siehe POSIX-spec - @ pubs.opengroup.org/onlinepubs/9699919799/basedefs/..., reservieren Kleinbuchstaben für die Anwendung zu verwenden, halten Sie im Verstand, dass shell-und environment-Variablen werden zu teilen einer einzigen namespace -- Der Raum der Namen von Umgebungsvariablen mit Kleinbuchstaben reserviert für Anwendungen.Verwenden Sie die
time
Befehl.time ls /bin
.time
ist nicht geeignet wenn Sie die Ausführung von komplexe Befehlsfolgetime (ls / ; sleep 2; ls /bin)
.\
und()
es wurde komplexer./usr/bin/time -f '%C => %E' (ls / ; sleep 2; ls /bin)
wirftbash: syntax error near unexpected token '('
Versuchen Sie Folgendes Beispiel:
Hier ist das script zu finden, die verstrichene Zeit in Millisekunden. Ersetzen Sie die sleep 60 Zeile mit dem code, den Sie ausführen möchten.
Viele Antworten erwähnen
$SECONDS
, aber die variable ist eigentlich sogar noch besser als Sie zu realisieren:Bedeutet dies, dass Sie können einfach die Abfrage dieser variable direkt auf das Ende, Ihr Skript zu drucken, die verstrichene Zeit:
Kann man auch mal kleinere Abschnitte, etwa so:
Nur, um zu helfen jemand wie mich, wird eine Fehlermeldung angezeigt:
Überprüfen Sie Ihre Shell-Script, dass gestartet werden soll mit:
Prost!
GNU
time
Ich bin auch ein großer Spaß-der GNU
time
Befehl: https://www.gnu.org/software/time/ die bietet einige wichtige Optionen im Vergleich zu dentime
Bash built-in.Beispiel für die Nutzung:
Ausgabe:
Erklärung:
env
: finden/usr/bin/time
statt der Bash built-in--format '%e'
: Druck-Zeit in Sekunden, sieheman time
.Dies ist oft das, was ich will, wenn benchmarking: eine einzelne Zahl, sondern als die Minuten + Sekunden.
Und eine wichtige Muster, das ich Häufig benutze ist:
GitHub upstream.
Ausgabe:
Erklärung:
--output
: die Ausgabe der Zeit in eine Datei.Standardmäßig wird die Ausgabe geht auf stderr, so dass diese option ist wichtig zu trennen, das timing aus dem stderr des Befehls.
--append
: "anfügen", um die Datei zu überschreiben.Dies erlaubt mir, mich zu konzentrieren, um den gesamten benchmark-Ausgabe in einer einzigen Datei.