如何分别在linux终端中获取程序执行时间

时间:2015-03-06 11:13:15

标签: linux bash time terminal linuxmint

我想在我的终端中获得执行程序的时间。我知道我应该使用这个命令:

time chmod +x ~/example

但输出是这样的:

real    0m0.088s
user    0m0.057s
sys     0m0.030s

但我想分别访问每一个。例如real。我怎么能得到它?

3 个答案:

答案 0 :(得分:2)

您可以使用-f格式化time命令:

$ /usr/bin/time -f "\t%E Elapsed Real Time" touch a
    0:00.00 Elapsed Real Time

极客的内容有关于此主题的非常广泛的文档: 12 UNIX / Linux Time Command Output Format Option Examples

单独用time调用它对我来说不起作用也很有趣,我必须使用完整的路径。

答案 1 :(得分:2)

在bash中,您可以通过设置

来影响timeTIMEFORMAT变量的输出
TIMEFORMAT=%R    # real
TIMEFORMAT=%U    # user
TIMEFORMAT=%S    # sys
在打电话之前

。但是,你的问题可能并没有就此结束 - 捕获time的输出对于bash并不是一件容易的事,因为它不是一个子进程而是一个内置的shell。关于该主题的bash FAQ中有一个条目。从那里开始,我想你最终想要

TIMEFORMAT=%R myvar=$( { time chmod +x ~/example > /dev/null 2>&1; } 2>&1 )

然后$myvar将是命令的实际运行时间。

答案 2 :(得分:1)

你可以这样做:

(time chmod +x ~/example) |& awk '$1=="real"{print $2}'
0m0.003s