欢迎访问宙启技术站
智能推送

shell 计算脚本执行时间

发布时间:2023-05-14 18:32:06

计算脚本执行时间在 shell 脚本开发过程中无疑是非常重要的,特别是在需要分析程序性能、优化算法等方面。本文将介绍如何在 shell 脚本中计算程序的耗时。

在 shell 中,我们可以使用内置命令 time 来计算脚本的执行时间。time 命令会在执行命令时记录该命令的耗时,并在命令执行完成后输出总执行时间、系统 CPU 时间和用户 CPU 时间。

示例使用:

time ./my_script.sh

time 命令会启动一个子 shell,执行 my_script.sh 脚本,并在脚本执行完成后输出如下结果:

real    0m0.020s
user    0m0.010s
sys     0m0.010s

- real:命令从开始执行到结束所经过的实际时间。

- user:耗费 CPU 执行用户态(用户程序所使用的 CPU 时间)的时间。

- sys:耗费 CPU 执行内核态(系统调用所使用的 CPU 时间)的时间。

从以上输出可以看出,my_script.sh 脚本执行的总时间为 0.020 秒,其中用户态执行的时间为 0.010 秒,系统态执行的时间为 0.010 秒。

此外,我们还可以通过在脚本中添加 start_time 和 end_time 变量来手动计算脚本执行时间。示例代码如下:

#!/bin/bash

start_time=$(date +%s)

# 脚本主体

end_time=$(date +%s)
echo "脚本执行时间为:$((end_time - start_time)) 秒"

以上代码中,我们使用 date 命令获取当前时间戳,分别在脚本开始和结束时记录时间,并通过减法计算出脚本的执行时间。

需要注意的是,date 命令返回的是自 UTC 1970 年 1 月 1 日 00:00:00 以来的秒数,因此在计算执行时间时需确保两个时间戳的单位相同,不然得到的结果将是毫秒级别的误差。

当然,也可以使用高级的时间戳计算工具 dateutils 来计算执行时间。例如:

#!/bin/bash

diff=$(dateutils.ddiff -i '%Y-%m-%d %H:%M:%S' -f '%H:%M:%S' "2021-12-31 23:59:59" "2022-01-01 00:00:01")
echo "2021-12-31 23:59:59 和 2022-01-01 00:00:01 之间相差 $diff 秒"

以上代码使用了 dateutils.ddiff 命令,指定时间戳的格式为 '%Y-%m-%d %H:%M:%S',计算两个时间戳之间相差的秒数,并格式化输出结果。

总之,在 shell 脚本中计算执行时间有多种方式,具体选择哪种方式取决于实际需求和个人偏好。