time [-p] utility [argument]...
time 实用程序可调用带有 argument 的 utility 操作数,并将一条消息写入标准错误,其中列出 utility 的计时统计信息。消息包含以下信息:
从调用 utility 到其终止期间经过的(实际)时间。
用户 CPU 时间相当于 times(2) 函数为执行 utility 的进程返回的 tms_utime 和 tms_cutime 字段之和。
系统 CPU 时间相当于 times() 函数为执行 utility 的进程返回的 tms_stime 和 tms_cstime 字段之和。
如果 time 用作某个流水线的一部分,则报告的时间未指定(但它是该流水线上一个分组命令中的唯一一个命令时除外)。例如,下方左侧命令报告的时间未指定;右侧命令分别报告实用程序 a 和 c 的时间:
time a | b | c { time a } | b | c a | b | time c a | b | (time c)
支持以下选项:
采用以下格式将计时输出写入标准错误:
real %f\nuser %f\nsys %f\n < real seconds>, <user seconds>, <system seconds>
支持下列操作数:
要调用的实用程序的名称。
调用 utility 时要作为参数提供的任何字符串。
如果出现错误,time 实用程序将返回退出状态 127,以使应用程序能够区分“无法找到实用程序”与“调用的实用程序已退出并已指明错误”。之所以选择值 127,是因为它不常用来表示其他含义。大多数实用程序使用小值表示“常规错误情形”,大于 128 的值可能会与因收到信号而终止混淆。值 126 的选择方式类似,表示可以找到但无法调用实用程序。
经常需要将 time 应用于流水线或命令列表。将流水线和命令列表置于一个文件中便可实现。随后可将这一个文件作为实用程序调用,time 将应用于文件中的所有内容。
或者,也可以使用以下命令将 time 应用于复杂的命令:
example% time sh -c 'complex-command-line'示例 2 在 csh shell 中使用 time 命令
以下两个示例说明了 csh 版本的 time 与 /usr/bin/time 中版本之间的区别。这些示例假定 csh 是正在使用的 shell。
example% time find / -name csh.1 -print /usr/share/man/man1/csh.1 95.0u 692.0s 1:17:52 16% 0+0k 0+0io 0pf+0w
有关 time 输出格式的说明,请参见 csh(1)。
example% /usr/bin/time find / -name csh.1 -print /usr/share/man/man1/csh.1 real 1:23:31.5 user 1:33.2 sys 11:28.2
有关影响 time 执行的环境变量 LANG、LC_ALL、LC_CTYPE、LC_MESSAGES、LC_NUMERIC、NLSPATH 和 PATH 的说明,请参见 environ(5)。
如果调用了 utility,time 的退出状态将为 utility 的退出状态。否则,time 实用程序将以下列值之一退出:
time 实用程序中出现错误。
utility 已找到但无法调用。
无法找到 utility。
有关下列属性的说明,请参见 attributes(5):
|
csh(1)、shell_builtins(1)、timex(1)、times(2)、attributes(5)、environ(5)、standards(5)
在多处理器计算机上运行 time 命令时,为 user 和 sys 输出的值之和可能会超过 real。这是因为在多处理器计算机上,可能会在多个处理器之间划分任务。
如果计时的命令中断,显示的计时值可能并不总是非常精确。
经过的时间精确到秒,而 CPU 时间以百分之一秒计。因此,CPU 时间之和最多会比经过的时间多一秒。