检查Bash脚本需要多长时间运行 time命令

时间:2020-03-05 15:29:54  来源:igfitidea点击:

这是一个简单的命令,可以测量......你猜到了,时间。
但它不是时钟应用程序。
它测量运行程序或者脚本时所花费的时间。

Hyman@theitroad:~$time ./script.sh
real 0m12.010s
user 0m0.004s
sys 0m0.006s

我将在一分钟内解释时间命令及其输出。

有几个不同版本的时间实用程序。
其中我们将看看Bash版本,因为这是我们最有可能在系统上遇到的版本。

还有一个zsh版本和gnu版本。

让我们避免混淆并验证版本。

Hyman@theitroad:~$type time
time is a shell keyword

如果输出看起来像这样,那就是完美的。
这意味着我们正在使用bash。
该命令在所有迭代中执行相同的任务,因此如果我们不使用Bash,担心不是,我们仍然能够理解正在发生的事情。
但是,它可能看起来很不同。

使用时间命令

时间命令测量以下内容:

  • 实时时间:经过的总时间
  • 用户:用户模式下的OS处理
  • SYS:内核模式下的OS处理

它可以与任何命令或者管道命令一起使用。

时间与基于文本的应用程序

让我们看看纳米的一个例子。

Nano是一个基于终端的文本编辑器。
如果我开始纳米然后通过应用程序立即退出(Ctrl + X),输出将如下所示:

time nano
real    0m1.465s
user    0m0.031s
sys        0m0.006s

时间与GUI应用程序

这也适用于GUI应用程序。
一旦申请退出,或者如果在终端输入中断(Ctrl + C),则将返回输出。

time firefox
real    0m6.784s
user    0m4.962s
sys        0m0.459s

传统的GNU版本

正如我之前触摸的那样,大多数Linux用户运行Bash,它基本上使用快捷方式来创建人类可读内容。
我们可以使用转义字符\来运行完整的GNU版本。
这将绕过内置的快捷方式。

这次我将只需使用睡眠命令来创建一个虚拟作业。

数字是持续时间以秒为单位。
我们还将看到这反映在输出的实时。

请注意,由于它是一个虚拟任务,因此没有致力于它的实际资源时间。

Hyman@theitroad:~$\time sleep 3
0.00user 0.00system 0:03.00elapsed 0%CPU (0avgtext+0avgdata 1944maxresident)k
0inputs+0outputs (0major+75minor)pagefaults 0swaps

此输出更难以阅读,但它还分享了一些关于内存使用情况的信息,我们可能会发现有用。

gnu time -p =(bash)时间

我们通常使用Bash版本的输出类似于GNU时间与-p选项运行的别名。

Hyman@theitroad:~$\time -p sleep 3
real 3.00
user 0.00
sys 0.00

正如我们所看到的那样,这为我们提供了相同的输出,好像我们使用Bash快捷方式运行它。