使用awk计算平均执行时间(正在运行的脚本)

・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内置的。

Hujiuxiang profile image