Speichern Sie in einer Variablen die Anzahl der Sekunden, die eine Prozess dauerte zu laufen
Ich soll zum ausführen eines Prozesses in der bash und speichern Sie in einer env-variable die Anzahl der Sekunden, die es dauerte, um zu laufen.
Wie würde ich solch eine Sache tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie wollen, fügen Sie diesen code in dein script, oder tun Sie es aus dem Prozess, der gestartet wird das Skript?
Für letzteres, können Sie mit der "Zeit" (reserviertes Wort) und dann analysieren, was es zurück zu bekommen, wie viel Zeit ein Skript braucht.
Wenn Sie möchten, tun Sie dies innerhalb eines Skripts können Sie die variable SEKUNDEN auf null, und jedes mal, danach, auf den Sie verweisen, die variable wird aktualisiert werden, um die Anzahl der verstrichenen Sekunden. Also, du kannst "SEKUNDEN=0" am Anfang des Skripts, und Wann immer Sie brauchen, die verstrichene Zeit, die es in die SEKUNDEN-variable.
Können Sie auch die $SEKUNDEN trick auf der Befehlszeile, zum Beispiel:
Zeit reserviertes Wort und die SEKUNDEN-variable beide sind dokumentiert in der bash-Manpage.
Dies funktioniert in der Bash, und auch Zsh:
rtime(){ TIMEFORMAT=%R; echo $(time ("$1" 2>&1) 2>&1) }
.... und später...echo $SECONDS
- Das ist magic™... und ich verwende Sie ALLE die Zeit.Mit GNU-Zeit,
Lesen und danach
time.log
.(Entweder
\time
odercommand time
, sonst wirst du mit Bash isttime
built-in, die keine Unterstützung für diese Optionen.)Dies funktioniert auch, wenn
$COMMAND
Drucke auf stderr auszugeben (was verwirren würde Oli ' s Antwort), und hält stdout/stderr (die Farzy die Antwort nicht).-o ...
sagttime
senden die Ausgabe in eine Datei anstatt auf stderr auszugeben (da ist das Standard), und-p
generiert die traditionelleeher als GNU-Zeit Standard von
Verwenden Sie den time-Befehl. Beachten Sie, dass die bash-version, die Zeit ist nicht das gleiche wie /usr/bin/time. So würden Sie etwas wie:
Das format nur zieht die "echte" Zeit-Wert aus. Würden Sie brauchen, um zu konvertieren, dass aus einem string, wenn Sie wollte, nichts mehr zu machen, als Sie anzuzeigen.
Wenn Sie nur wollen, zu exportieren, die Zeichenfolge, verwenden Sie
export
.$TIME
verwendet/usr/bin/time
so wäre es besser, wählen Sie eine andere variable name. Eine Möglichkeit zur Vermeidung solcher Kollisionen ist nicht verwenden Namen, die sind alle groß für Ihre eigenen Variablen.