Verfolgen Sie die Zeit, die ein Befehl in UNIX / LINUX benötigt?

118

Gibt es unter UNIX / LINUX eine einfache Möglichkeit, die Zeit zu verfolgen, die ein Befehl benötigt?

OneChillDude
quelle

Antworten:

165

Ja, verwenden Sie time <command>wie

time ls

Konsultieren Sie man timefür weitere Optionen. Link .

squiguy
quelle
4
Und die Bedeutung der real / user / sys mal schön bedeckt hier
prideout
Diese Antwort ist für Bash-Benutzer unter Linux ungenau. Die Manpage dokumentiert den Gnu-Zeitbefehl, aber Zeit ist eine eingebaute Bash, in der nicht alle Optionen dokumentiert sind.
Ben Crowell
7

Verwenden

/usr/bin/time 

Stattdessen ist die Zeit in der Bash eingebaut: Es ist AFAIK konfigurierbarer.

e.g. /usr/bin/time --format=' \n---- \nelapsed time is %e'ls
Paolinux
quelle
Soweit ich das beurteilen kann, ist dies die Standardeinstellung. Dies war auf den von mir überprüften CentOS 6-, CentOS 7- und Debian 8-Systemen der Fall: Es user@host:~$ which time /usr/bin/time scheint Version 1.7 der GNU-Zeit zu sein.
Toby
4
@Toby: Auch wenn "welches" sagt, dass es / usr / bin / time ist, überschreibt das eingebaute in bash das. Wenn ich time -f "\t%E real" lsin Bash mache , bekomme ich eine Fehlermeldung, aber es funktioniert, wenn ich es tue /usr/bin/time -f "\t%E real" ls.
Ben Crowell
1
Du hast recht. Das ist sehr interessant und aufschlussreich. Vielen Dank!
Toby
1
Nicht benutzen which. Verwenden Sie type -a:$ which time /usr/bin/time $ type -a time time is a shell keyword time is /usr/bin/time
Daniel-Dane
Beachten Sie, dass die Verwendung von /usr/bin/timeverhindert , dass Sie Bash-Aliase verwenden. Dafür timewird die eingebaute Bash benötigt, sonst wird der Fehler angezeigt cannot run my_alias: No such file or directory.
Jamie S
6

So sieht eine sleepSekunde aus, zeitlich abgestimmt mit time:

$ time sleep 1

real    0m1.001s
user    0m0.000s
sys 0m0.000s
Guillaume Chevalier
quelle