使用awk计算平均执行时间(正在运行的脚本)
Hujiuxiang
・1 分钟阅读
$ for i in {1..10}; do time some_script.sh; done 2>&1 | grep ^real | sed -e s/.*m// | awk '{sum += $1} END {print sum / NR}'
说明
- for循环运行some_script.sh 10次用
time
测量它执行时间 - for循环的stderr被重定向到stdout,这是捕获时间的输出所以,我们可以grep它,
- grep ^real是只获取time输出中以"real"开头的行
- rtc是将行的开头删除到最多几分钟(在
time
的输出中) - 对于每一行,awk添加到总和,以便在最后输出平均值,即总和,除以输入记录数(=
NR
),
限制
该片段假定some_script.sh的运行时间小于1分钟,否则它根本不起作用。根据你的系统,time
内置可能会有不同的工作,另一种替代方法是使用时间命令/usr/bin/time而不是bash内置的。