如何在 bash 中使用时间命令,将系统时间 + 用户时间相加,并以毫秒为单位输出?

如何在 bash 中使用时间命令,将系统时间 + 用户时间相加,并以毫秒为单位输出?

time命令返回这样的表?

real      0m1.607s
user    0m0.154s
sys 0m0.032s

我在 shell 脚本中运行此程序。处理time输出的最简单方法是什么,以便获得一个$RUNTIME保存用户 + 系统毫秒数总和的变量?

答案1

如果您需要使用 bashtime内置函数,我会使用以下命令:

a=$(echo $( TIMEFORMAT="%3U + %3S"; { time your_command; } 2>&1) "*1000" | bc -l)

例子:

a=$(echo $( TIMEFORMAT="%3U + %3S"; { time sleep 1; } 2>&1) "*1000" | bc -l)
echo $a
2.000

a=$(echo $( TIMEFORMAT="%3U + %3S"; { time sudo hdparm -t -T /dev/sda 2>&1 >/dev/null; } 2>&1) "*1000"  | bc -l)
echo $a
2302.137

答案2

做这个

使用以下脚本运行您的命令,替换your_command

$ ALL_TIME=`(time your_command) 2>&1 | grep -E "user|sys" | sed s/[a-z]//g`

现在变量 ALL_TIME 存储两个值:`

$ echo $ALL_TIME
00.001 00.003

现在您需要汇总值。使用下面的脚本

不要忘记设置运行时间设为零

$ RUNTIME=0
$ for i in $ALL_TIME; do RUNTIME=`echo "$RUNTIME + $i"|bc`; done
$ echo $RUNTIME
.004

来源

如何从时间中 grep

将 unix 中的时间命令输出重定向到 bash 中的变量?

相关内容