【问题标题】:Bash counting executed timeBash 计算执行时间
【发布时间】:2018-01-28 18:28:18
【问题描述】:

我想在 bash 中编写一个脚本,它将执行多长时间保存到文件中

我希望输出如下所示: 1 minute 2 minute ...

【问题讨论】:

  • 目标是您添加一些自己的代码,以至少展示您为解决这个问题所做的研究工作。
  • 您需要更详细地描述您的环境以及到目前为止您已完成的工作,如上述建议。您也可以使用 Google 搜索解决方案,因为这是一项非常简单的任务,只需进行一些研究即可完成。
  • 此链接对您有帮助 [stackoverflow.com/questions/385408/…
  • 使用命令'time [your_command]',它会准确计算命令的执行时间

标签: linux bash shell time timer


【解决方案1】:

要求

你需要安装time(不是内置的shell)。

验证您是否拥有正确的:$ which time

这是预期的输出:

$ which time
/usr/bin/time

解决方案

假设您有一个名为 main 的函数,其中包含您的主要脚本代码

function main() {
  echo "Sleeping .."
  sleep(5)
  echo "This is the first arg: ${1}"
  echo "This is the second arg: ${2}"
}

要对该函数调用计时,请执行以下操作(参数供参考):

main "HELLO" "WORLD" | $(which time) -o "OUTPUT_FILENAME_FOR_TIME" -f "%e" $(which bash)

说明

我们正在将 /usr/bin/time 传递给函数调用来计时。我们使用$(which time) 调用time,因为我们不希望shell 内置。之后我们传递-o 参数来定义我们的输出文件,然后-f 参数用于定义时间格式。在我的示例中,我使用了秒。最后,我们传递了我们正在使用的shell,在我们的例子中我们使用的是bash,所以$(which bash)

man time 了解其他格式,当然还有程序的正确用法

我总是使用秒,因为它更容易将它们转换为任何东西。

编辑#1

您可以使用 GNU 工具 command 而不是使用 time 的绝对路径

 $ command time

而不是

 $ $(which time)

【讨论】:

  • 使用 /usr/bin/time 比 shell 内置有什么好处?
  • @user1934428 你可以阅读this
  • 嗯....虽然这篇文章很有趣,但我不知何故错过了重点。文章确实一句话GNU的时间,/usr/bin/time,通常比内置的更有用,但是没有给出任何解释,在什么方面更有用。相反,它详细(并且很好地)解释了内置(又名 bash 时间)提供了比 gnu 时间更高的精度。这宁愿成为支持 bash 时间的论据(但不适用于这里的问题,因为 OP 只需要精确到分钟的分辨率)。
  • @user1934428 根据我对time 命令用法的经验:要使用内置time 编写时间日志文件,您必须将stdout 和stderr 重定向到文件(somecommand &> time.log)。在这种情况下,您有精确度,但如果 somecommand 产生任何错误,这将被写入您的 time.log 中,这是您不希望发生的事情。另一方面,/usr/bin/time 不太精确,但您可以通过参数控制输出,使用可以使用 -f 选项或 TIME 环境变量指定的格式字符串格式化输出等等。
  • @user1934428 我再次发表评论(没有剩余字符)。 注意:不太精确,大约 0.0X 秒,其中 X 是一个整数。 此外,要将秒转换为分钟,可以使用 BASH 数学:VAR=$(( X - Y ))bc 命令,或类似python
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-21
  • 2021-07-15
  • 2015-07-19
  • 2010-10-26
  • 2012-12-10
  • 2012-11-27
相关资源
最近更新 更多