繁体   English   中英

如何在bash脚本中获取time命令的输出?

[英]How to get the output of time command in a bash script?

该命令在我的shell中完美地工作,我想在bash脚本中编写它,但不再起作用:

make -s clean > /dev/null; { time make -j -s gallery > /dev/null; } 2>&1 | grep real | sed 's/^.*m//;s/.$/ /' > time_make 

问题是时间的流逝。

在shell中,这个命令:

make -s clean > /dev/null; { time make -j 1 -s gallery > /dev/null; } 2>&1 | grep m > time_make

有结果:

real   0m2.127s
user   0m3.375s
sys    0m0.532s

那很好。

但是在脚本中(#!/ bin / sh):

相同的命令具有以下结果:

3.36user 0.51system 0:02.08elapsed 186%CPU (0avgtext+0avgdata49100maxresident)k
0inputs+2384outputs (0major+114980minor)pagefaults 0swaps

如何在bash脚本中获取“ real”的值?

我真的不明白为什么“时间”命令的输出不一样。 有人可以帮我吗?

提前致谢。

如果您想捕获命令花费在bash上的时间,则可以通过执行以下操作来获得更多控制权(假设您正在安装GNU时间的系统上):

START=$(date +%s.%N)
# command you want to time goes here
END=$(date +%s.%N)
printf -v DELTA "%g" $(bc <<<"$END - $START")
echo "Command took ${DELTA} seconds"

您实际上可以将输出格式化为小时,分钟,秒等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM