如何在Linux的Shell脚本中获取脚本执行时间
使用bash脚本以分钟为单位找出运行时间。
Bash脚本执行时间。
在shell脚本中获取脚本执行时间。
如何在Unix中获得命令执行时间。
bash脚本的开始结束时间。
如何在Unix中计算脚本执行时间。
bash获取命令执行时间。
这个问题有两个部分。
从外部获取脚本执行时间或者命令执行时间
在内部获取脚本执行时间
从外部获取脚本执行时间
我们可以使用"time
"命令来获取脚本的执行时间。
该命令将调用Tcl解释器的计数时间来评估脚本(如果未指定count,则计算一次)。
然后,它将返回每次迭代形式为503微秒的字符串,该字符串指示每次迭代所需的平均时间(以微秒为单位)。
# time /tmp/script.sh Script Execution Time: 5.00 seconds real 0m5.015s user 0m0.005s sys 0m0.014s
其中"实际"或者总计或者已用时间(挂钟时间)是从通话开始到结束的时间。
这是从我们按下Enter键到脚本执行完成的时间。
"用户"在用户模式下花费的CPU时间。
在内核模式下花费的"系统或者系统" CPU时间量。
获取命令执行时间
使用以下格式的time
命令来获取命令执行时间。
在执行结束时,time命令将为我们提供执行时间值。
我们可以进一步向awl/grep/sed用户获取所需的详细信息。
# time rpm -Uvh /export/home/iserver/linux/install/Linux/rhel7_64/Packages/atk-2.22.0-3.el7.x86_64.rpm Preparing... ################################# [100%] Updating/installing... 1:atk-2.22.0-3.el7 ################################# [100%] real 0m0.104s user 0m0.077s sys 0m0.027s
输出与上面说明的相同。
在内部获取脚本执行时间
由于time命令只能从外部调用,因此这里比较棘手,但是如果我们希望从脚本内部获取脚本执行时间,则必须在脚本中放置一些函数。
下面,我创建了一个虚拟脚本来内部测量脚本执行时间
#!/bin/bash # This should be at the top of the script to get the start time of the script start=$(date +%s.%N) # Here you can place your function sleep 5 duration=$(echo "$(date +%s.%N) - $start" | bc) execution_time=`printf "%.2f seconds" $duration` echo "Script Execution Time: $execution_time"
让我们执行脚本
# /tmp/script.sh Script Execution Time: 5.00 seconds
因此,我们的脚本运行了5秒钟。
但这不是一个非常可靠的解决方案,因为如果脚本突然退出,那么脚本将无法打印执行时间。
因此,我们必须采取一些额外的措施,以确保脚本在任何情况下都可以确保脚本的持续时间。
但这会因脚本而异,因此我无法在此进行预测。
我们可以编写一些退出功能,例如
# This should be at the top of the script to get the start time of the script start=$(date +%s.%N) function exit_with_error { duration=$(echo "$(date +%s.%N) - $start" | bc) execution_time=`printf "%.2f seconds" $duration` echo "Script Execution Time: $execution_time" exit 1 }
因此,现在我们可以在所有可能退出脚本的情况下使用exit_with_error
函数,以便为所有成功和失败情况正确获得脚本执行时间。