如何测量终端进程的执行时间?

202 performance command-line

我正在尝试测量我通过命令行调用的进程的执行时间(即,我想知道进程完成需要多长时间)。是否有任何命令可以添加到调用将实现此目的的进程的命令中?

小智 251

time在要测量的命令之前添加。例如:time ls

输出将如下所示:

real    0m0.606s
user    0m0.000s
sys     0m0.002s
Run Code Online (Sandbox Code Playgroud)

关于real,usersys(from man time) 的解释:

  • real:进程使用的实际(挂钟)时间,以秒为单位。
  • user:进程直接(在用户模式下)使用的 CPU 秒总数,以秒为单位。
  • sys:系统代表进程(在内核模式下)使用的 CPU 秒总数,以秒为单位。

  • @JacobVlijm 这个答案不是很详细。:) 你可以在你的评论中进行编辑并做到这一点。 (2认同)

Jan*_*sen 51

对于逐行增量测量,请尝试gnomon

它是一个命令行实用程序,有点像 moreutils 的 ts,用于将时间戳信息添加到另一个命令的标准输出中。对于需要长时间运行的历史记录的长时间运行的流程很有用。

将任何内容通过管道传送到 gnomon 将在每行前面添加一个时间戳,指示该行是缓冲区中最后一行的时间——即下一行出现的时间。默认情况下, gnomon 将显示每行之间经过的秒数,但这是可配置的。

gnomon 演示

  • 这很光滑。 (5认同)
  • 现在已经被弃用了,现在有类似的替代方案吗? (2认同)

小智 29

您可以使用time

time ls -R
Run Code Online (Sandbox Code Playgroud)


小智 10

date +"%T" && cp -r ./file  /destination/folder/here && date +"%T"
Run Code Online (Sandbox Code Playgroud)

在终端中运行此命令将为您提供处理文件的总时间

  • 这将为您提供开始时间和结束时间,而不是持续时间。 (2认同)

Cor*_*ein 6

有时我发现自己需要一个秒表来计算像我的应用程序启动这样的操作需要多长时间,在这种情况下,这里的许多解决方案都没有用。

为此,我喜欢使用sw

SW

安装

wget -q -O - http://git.io/sinister | sh -s -- -u https://raw.githubusercontent.com/coryfklein/sw/master/sw
Run Code Online (Sandbox Code Playgroud)

用法

sw
 - start a stopwatch from 0, save start time in ~/.sw
sw [-r|--resume]
 - start a stopwatch from the last saved start time (or current time if no last saved start time exists)
 - "-r" stands for --resume
Run Code Online (Sandbox Code Playgroud)