📅  最后修改于: 2023-12-03 14:39:29.073000             🧑  作者: Mango
在编写 Shell/Bash 脚本时,我们经常需要测量脚本的执行时间。这对于优化脚本性能以及对脚本进行调试都非常有帮助。本文介绍如何在 Bash 中测量脚本的执行时间。
time
命令time
命令是 Bash 内置的一个命令,可以测量命令或脚本的执行时间。在 Bash 中执行某个命令或脚本时,可以在命令前加上 time
,即可获得该命令/脚本的执行时间。
time command
time script.sh
time
命令会返回三个时间:实际时间(real)、用户时间(user)、系统时间(sys)。其中,实际时间是命令/脚本执行所用的总时间,包括 CPU 时间和 I/O 等待时间;用户时间是指命令/脚本在用户态执行的 CPU 时间;系统时间是指命令/脚本在内核态执行的 CPU 时间。
比如,下面是一个简单的示例,其中 sleep 2
命令会在 2 秒钟后返回:
$ time sleep 2
real 0m2.004s
user 0m0.000s
sys 0m0.004s
在实际应用中,我们也可以将 time
命令与管道符号一起使用,例如:
time ls -l | grep "test" > /dev/null
date
命令除了 time
命令外,我们还可以使用 date
命令来测量脚本的执行时间。具体做法是,在脚本的开始和结束处都分别添加一行代码,分别用于获取当前时间戳。两个时间戳的差值即为脚本的执行时间。
#!/bin/bash
start=$(date +%s) # 获取脚本开始执行的时间戳
# 脚本执行内容
end=$(date +%s) # 获取脚本结束执行的时间戳
echo "脚本执行时间:$((end-start))秒" # 输出脚本执行时间
在上述脚本中,变量 $start
和 $end
分别获取脚本开始和结束的时间戳。这里用到了 date
命令的 %s
格式化选项,它会将日期转换为从 1970 年 1 月 1 日 00:00:00 UTC 起到现在的秒数。因此,两个时间戳的差值就是脚本的执行时间(以秒为单位)。
这篇文章介绍了两种测量 Bash 脚本执行时间的方法,它们分别是使用 time
命令和使用 date
命令。前者更为简单,可以直接测量命令或脚本的执行时间,但无法在脚本中使用;后者相对更为灵活,允许我们在脚本中直接获取执行时间,但需要在脚本中编写额外的代码。
无论采用哪种方法,测量脚本执行时间都是优化脚本性能以及进行调试时必不可少的工具。