Wie kann ich einen bestimmten Befehl zeitlich festlegen?

67

(Das Linux-Äquivalent von TimeThis.exe)

So etwas wie:

timethis wget foo.com
Receiving foo.com  
...

wget foo.com took 3 seconds.
ripper234
quelle

Antworten:

93

Versuchen Sie es einfach timestatt timethis.

Beachten Sie jedoch, dass es häufig eine Shell-Version von time und eine Binärversion gibt, die Ergebnisse in verschiedenen Formaten liefern:

$ time wget -q -O /dev/null https://unix.stackexchange.com/

real    0m0.178s
user    0m0.003s
sys     0m0.005s

vs

$ \time wget -q -O /dev/null https://unix.stackexchange.com/
0.00user 0.00system 0:00.17elapsed 4%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+613minor)pagefaults 0swaps

Im Gegensatz zu Ihrem "timethis" -Programm erhalten Sie drei Werte zurück. Das ist in Was ist "Systemzeit", wenn "Zeit" in der Befehlszeile verwendet wird , aber kurz: Real bedeutet "Wanduhrzeit", während User und Sys die CPU-Uhrzeit anzeigen , die zwischen regulärem Code und Systemaufrufen aufgeteilt ist.

mattdm
quelle
26

Indem Sie die ausführbare Datei timeanstelle der integrierten Shell verwenden, können Sie das Ausgabeformat und die Werte angeben. ZB die tatsächlich verstrichene Zeit zusammen mit dem Befehlsnamen und den Parametern ermitteln

/usr/bin/time --format='%C took %e seconds' sleep 3
sleep 3 took 3.00 seconds

Beachten Sie, dass Sie den Pfad für angeben müssentime , andernfalls verwenden Sie standardmäßig die integrierte Shell.

forcefsck
quelle
4
Beachten Sie Folgendes: Der Pfad ist wichtig. Verwenden Sie nicht nur "Zeit" in Bash. Verwenden Sie stattdessen / usr / bin / time
CodeFarmer
1
Was ist der Unterschied, wenn /usr/binin ihrem Pfad?
Galois
@galois Der Unterschied besteht darin, dass ohne den expliziten Pfad das integrierte timeDienstprogramm der Shell verwendet wird.
Kusalananda
Kann auch command timeoder verwenden \time, um das Dienstprogramm anstelle des eingebauten Dienstprogramms auszuführen.
Forcefsck
0

@galois: Die verschiedenen Shells haben eine Handvoll "eingebauter" Befehle, die Vorrang vor allem haben, was sich auf dem Pfad befindet. Normalerweise ist dies vorteilhaft; Die eingebauten Funktionen werden in der Regel schneller ausgeführt (da keine externe Datei aufgerufen wird) und liefern normalerweise das gewünschte Ergebnis (dh im Falle eines Zeitbefehls ist es Ihnen normalerweise egal, welche Version Sie verwenden, es sei denn, Sie möchten die Option "" verwenden. --format "flag).

"Zeit" ohne Sonderzeichen (wie /), damit es wie ein Pfad aussieht, führt das eingebaute Programm aus, unabhängig davon, wie Ihr PFAD aussieht.

Damit die Shell den Befehl external time verwendet, müssen Sie den Pfad angeben

Tom Payerle
quelle