Ist es möglich, die Ausführungszeit eines Shell-Befehls mit der folgenden Kombination zu drucken?
root@hostname:~# "command to execute" && echo "execution time"
quelle
Ist es möglich, die Ausführungszeit eines Shell-Befehls mit der folgenden Kombination zu drucken?
root@hostname:~# "command to execute" && echo "execution time"
Vergessen Sie nicht, dass es einen Unterschied zwischen dem eingebauten Bash gibt time
(der standardmäßig aufgerufen werden sollte, wenn Sie dies tun time command
) und /usr/bin/time
(bei dem Sie ihn auf seinem vollständigen Pfad aufrufen müssen).
Das integrierte Programm time
druckt immer in stderr, /usr/bin/time
ermöglicht es Ihnen jedoch, die Zeitausgabe an eine bestimmte Datei zu senden, damit Sie den stderr-Stream des ausgeführten Befehls nicht stören. Auch /usr/bin/time
‚s - Format konfigurierbar ist in der Befehlszeile oder von der Umgebungsvariablen TIME
, während heftiger Schlag des builtin time
Format wird nur durch die konfigurierte TIMEFORMAT
Umgebungsvariable.
$ time factor 1234567889234567891 # builtin
1234567889234567891: 142662263 8653780357
real 0m3.194s
user 0m1.596s
sys 0m0.004s
$ /usr/bin/time factor 1234567889234567891
1234567889234567891: 142662263 8653780357
1.54user 0.00system 0:02.69elapsed 57%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+215minor)pagefaults 0swaps
$ /usr/bin/time -o timed factor 1234567889234567891 # log to file `timed`
1234567889234567891: 142662263 8653780357
$ cat timed
1.56user 0.02system 0:02.49elapsed 63%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+217minor)pagefaults 0swaps
man bash
: "Die Variable TIMEFORMAT kann auf eine Formatzeichenfolge festgelegt werden, die angibt, wie die Zeitinformationen angezeigt werden sollen."help time
weil ich nur einen Blick darauf geworfen habe und dachte, es sei ein Befehlszeilenargument. Ich werde die Antwort aktualisieren.time
ist ein in den meisten Shells integrierter Befehl, der Ausführungszeitinformationen in das tty schreibt.Sie könnten auch so etwas versuchen
Oder in
bash
:quelle
time
Millisekunden verwendet werden. Und wenn Sie eine Handvoll Befehle zusammen zeitlich festlegen möchten, ohne Variablen und Berechnungen verwenden zu müssen, können Sie Klammern verwenden:time ( command1 ; command2 ; command3 )
Sie können sie sogar einzeln zusammen mit einer Gesamtzeit zeitlich festlegen, wie folgt:time ( time command1 ; time command2 ; time command3 )
Wenn Sie etwa zwanzig Befehle wünschen, können Sie dies natürlich tun Verwenden Sie besser die Lösung dieser Antwort. Aber dann sollten Sie darüber nachdenken, Ihre Befehle alle in ein Skript zu schreiben ...Es wird auch zwischen der verwendeten Echtzeit und der verwendeten Systemzeit unterschieden.
quelle
time
schreibt an die tty, nicht an stderr. Was ich denke, macht die Sache noch schlimmer.Versuchen Sie für eine zeilenweise Delta-Messung gnonom .
quelle
Zur Antwort von @ mob hinzufügen:
Das Anhängen
%N
andate +%s
gibt uns eine Genauigkeit von Nanosekunden:quelle
Wenn ich einen lang laufenden Prozess wie eine Kopie oder einen Hash starte und später wissen möchte, wie lange es gedauert hat, mache ich einfach Folgendes:
Was zu folgender Ausgabe führt:
Zugegeben, wie hier implementiert, ist es nicht sehr genau und berechnet nicht die verstrichene Zeit. Aber es ist einfach und manchmal alles was man braucht.
quelle
In zsh können Sie verwenden
In bash oder zsh können Sie verwenden
Diese (durch verschiedene Mechanismen) erzwingen die Verwendung eines externen Befehls.
quelle
Gerade
ps -o etime= -p "<your_process_pid>"
quelle