Um herauszufinden, wie lange bestimmte Operationen in einem Bash (v4 +) - Skript dauern, möchte ich die Ausgabe des time
Befehls "separat" analysieren und (letztendlich) in einer Bash - Variablen ( let VARNAME=...
) erfassen .
Jetzt benutze ich time -f '%e' ...
(oder eher command time -f '%e' ...
wegen des eingebauten Bash), aber da ich die Ausgabe des ausgeführten Befehls bereits umleite, bin ich wirklich verloren, wie ich die Ausgabe des time
Befehls erfassen würde . Grundsätzlich besteht hier das Problem darin , die Ausgabe von time
von der Ausgabe der ausgeführten Befehle zu trennen .
Was ich möchte, ist die Funktionalität , die Zeitspanne in Sekunden (Ganzzahlen) zwischen dem Starten eines Befehls und seiner Fertigstellung zu zählen. Es muss nicht das time
Kommando oder das jeweilige eingebaute sein.
Bearbeiten: Angesichts der beiden folgenden nützlichen Antworten wollte ich zwei Klarstellungen hinzufügen.
- Ich möchte die Ausgabe des ausgeführten Befehls nicht wegwerfen, aber es spielt keine Rolle, ob er auf stdout oder stderr endet.
- Ich würde einen direkten Ansatz einem indirekten vorziehen (dh die Ausgabe wird direkt abgefangen und nicht in Zwischendateien gespeichert).
Die date
bisherige Lösung kommt dem nahe, was ich will.
fork()
,execvp()
undwait3()/wait4()
. Dies ist letztendlich, was Zeit und Freunde tun. Mir ist keine einfache Möglichkeit bekannt, dies in bash / perl zu tun, ohne zu einer Datei oder einem ähnlichen Ansatz umzuleiten.