在变量中保存进程运行的秒数

fly*_*ire 6 linux bash time

我想在bash中运行一个进程,并在env变量中保存运行所花费的秒数.我怎么做这样的事情?

Bry*_*ley 16

您是要将此代码放在脚本中,还是从启动脚本的过程中执行此操作?

对于后者,您可以使用"时间"保留字,然后解析它返回的内容以获取脚本花费的时间.

如果要在脚本中执行此操作,可以将变量SECONDS设置为零,此后每次引用该变量时,它将更新为经过的秒数.因此,您可以在脚本的最开始处放置"SECONDS = 0",并且只要您需要经过的时间,它就会出现在SECONDS变量中.

您也可以在命令行上使用$ SECONDS技巧,例如:

$ SECONDS=0; sleep 5 ; echo "that took approximately $SECONDS seconds"
Run Code Online (Sandbox Code Playgroud)

时间保留字和SECONDS变量都记录在bash手册页中.

  • bash是一个永无止境的技巧和惊喜来源 (4认同)

小智 7

这适用于Bash,也适用于Zsh:

# Set time format to seconds
TIMEFORMAT=%R
# Time a process
PROC_TIME=$(time (insert command here >/dev/null 2>&1) 2>&1)
echo $PROC_TIME
Run Code Online (Sandbox Code Playgroud)
  • 前两个重定向隐藏了进程的输出">/dev/null 2>&1"
  • 最后一次重定向是必需的,因为"time"会在stderr上打印时间