如何计时特定命令?


66

(相当于TimeThis.exe的Linux)

就像是:

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

wget foo.com took 3 seconds.

Answers:


92

尝试time代替timethis

尽管请注意,通常会有时间的外壳内置版本二进制版本,它们会以不同的格式给出结果:

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

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

$ \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

与“ timethis”程序不同,您可以返回三个值。在命令行中使用“时间”时这在“系统时间”中得到了细分,但总而言之:real表示“时钟时间”,而用户sys显示CPU时钟时间,分为常规代码和系统调用。


26

通过使用可执行文件time而不是内置的Shell,可以指定输出格式和值。例如,获取实际经过的时间以及命令名称和参数

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

请注意,您必须指定的路径time,否则将默认使用内置的Shell。


4
注意:路径很重要。不要只是在bash中使用“时间”。相反,请使用/ usr / bin / time
CodeFarmer,2014年

1
如果/usr/bin在PATH中有什么区别?
galois

@galois的区别是,没有显式路径,将使用外壳time程序的内置实用程序。
库萨兰达

也可以使用command time\time执行实用程序而不是内置程序。
forcefsck

0

@galois:各种shell具有少数“内置”命令,这些命令优先于路径中的任何命令。通常这是有利的。内置程序往往会运行得更快(因为不调用外部文件),并且通常会提供所需的结果(即,对于使用time命令的情况,您通常不在乎使用的是哪个版本,除非您要使用“ --format“标志)。

因此,无论您的PATH是什么样,没有任何特殊字符(例如/)的“时间”都会使其最终看起来像是在运行内置路径。

要强制外壳使用外部时间命令,必须提供路径

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.