bash 脚本运行的时间(天/分钟/秒)

bash 脚本运行的时间(天/分钟/秒)

事实上,当我想要估计脚本完成所需的时间时。

startdate=$date

stuffs

enddate=$date

我希望得到这两个日期之间的差异,通常脚本完成时间不到 1 周。所以我需要它的天数和分钟数。

答案1

bash手册:

SECONDS

每次引用此参数时,都会返回自 shell 调用以来的秒数。如果将值分配给 SECONDS,则后续引用时返回的值是自分配以来的秒数加上所分配的值。如果SECONDS未设置,即使随后重置,它也会失去其特殊属性。

因此,每当您想使用计时秒数的计时器来计时一段代码时,您可以这样做

SECONDS=0

# code goes here

t=$SECONDS

要打印该$t值的天数和分钟数:

printf 'Time taken: %d days, %d minutes\n' "$(( t/86400 ))" "$(( t/60 - 1440*(t/86400) ))"

答案2

此外:time bash script.sh

答案3

您可以使用时间戳date "+%s"

$ date "+%s"
1590502845

并使用bash$(())进行计算

START=$(date "+%s")

work ... work... work ...

END=$(date "+%s")

echo $((END-START))

答案4

大多数答案都缺少一种以hh:mm:ss格式获取时间的简单方法。

让我们保持简单,仅使用 Bash 内置函数:

# Using the Bash built-in SECONDS
SECONDS=0;sleep 0; t=$((SECONDS+241));TT=$(date -u -d "@${t}" +%T); printf 'Time taken: %s\n' "$TT"
# Time taken: 00:04:01

# Using date differences, and give result in hh:mm:ss
S=$(date -u +"%s"); E=$((S+121)); TT=$((E-S)); date -u -d "@${TT}" +%T
# 00:02:01

相关内容