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

how to get time execution of a program in linux terminal separately

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

time chmod +x ~/example

但输出是这样的:

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

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

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

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

the geek stuff 有关于这个主题的非常广泛的文档: 12 UNIX / Linux 时间命令输出格式选项示例.

同样有趣的是,单独使用 time 调用它对我不起作用,我必须使用完整路径。

你可以这样做:

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

在 bash 中,您可以使用 TIMEFORMAT 变量影响 time 的输出,方法是设置

TIMEFORMAT=%R    # real
TIMEFORMAT=%U    # user
TIMEFORMAT=%S    # sys

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

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

那么$myvar就是命令真正的运行时间