基本思路:分别在程序开始运行和运行结束时打印系统时间,保存在time.txt中。
echo "starttime: `date +"%Y-%m-%d %H:%M:%S"`" > time.txt
xxxxxx #主程序
echo "endtime: `date +"%Y-%m-%d %H:%M:%S"`" >> time.txt
对开始和结束时间求差值,得到程序运行时间:
###runtime.sh
start=`awk '{print $2,$3}' time.txt | sed -n '1p'`
end=`awk '{print $2,$3}' time.txt | sed -n '2p' `
echo $start
echo $end
starttime=$(date -d "$start" +%s) #转化为系统时间
endtime=$(date -d "$end" +%s)
runtime=$(($endtime-$starttime)) #计算程序运行时间
echo $runtime
程序运行结果:
[li@localhost runtime]$ sh runtime.sh
2020-05-25 12:30:06
2020-05-25 13:20:48
3042
[li@localhost runtime]$
更进一步,如果是多个程序同时运行,最后要求平均的运行时间,应该怎么做呢?
基本思路:创建数组,存储每个程序的运行时间,之后求平均值,具体代码实现如下:
startnum=1
endnum=3
circuit='c100'
runtime=( )
for((i=$startnum;i<=$endnum;i++))
do
cat "/home/data/"$circuit"/test_"$i"/time.txt" >time.txt
start=`awk '{print $2,$3}' time.txt | sed -n '1p'`
end=`awk '{print $2,$3}' time.txt | sed -n '2p' `
starttime=$(date -d "$start" +%s)
endtime=$(date -d "$end" +%s)
time=$(($endtime-$starttime))
runtime=("${runtime[@]}" $time)
done
sum=0
for((i=0;i<$endnum;i++))
do
let sum=sum+${runtime[$i]} #求数组元素和
done
total=${#runtime[@]}
echo "$sum/$total" | bc > runtime.txt #求数组元素平均值
版权声明:本文为qq_36480087原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。