如何测量我的脚本运行所需的时间并将其包含在它生成的电子邮件中?

Mik*_*e B 12 bash shell-script time

我有一个运行一系列检查(一个简单的bash脚本pingnslookup等等),然后用这些数据的输出发送电子邮件报告。

我希望电子邮件包含有关运行整个脚本所需时间的信息。有没有一种简单的方法来收集这些信息?

jim*_*mij 16

我建议看看bash变量SECONDS

SECONDS:每次引用此参数时,返回自调用 shell 以来的秒数。如果将值分配给 SECONDS,则后续引用返回的值是自分配以来的秒数加上分配的值。

因此,您可以简单地在脚本末尾打印此变量。或者,如果您只想测量部分程序的时间,则只需SECONDS=0在测量的命令块的开头设置,最后只需使用存储在此变量中的值。

  • 没关系 - 我在 Stack Overflow 帖子 (http://stackoverflow.com/a/5153036/344780) 中偶然发现了 Tom 的反馈,它基本上减去了差异`START_TIME=$SECONDS; 做点什么; ELAPSED_TIME=$(($SECONDS - $START_TIME))`。对于同时使用,这似乎更灵活一些。 (3认同)

Ste*_*lls 8

为您的命令添加前缀/usr/bin/time,时间命令将输出脚本运行所花费的时间。这比使用bash特定的东西更便携。


rah*_*hul 6

使用时SECONDStime会给你相对值。如果您想获得有关脚本运行时间和完成时间的审计和报告目的的绝对值,您可能想在命令之前和之后尝试类似的操作 date '+%Y%m%d%H%M%S.%N'。这也可以为您提供更好的粒度,因为它可以捕获亚秒级差异,因为您拥有ping通常在一秒内执行的命令。