Bir işlemin Linux kabuğu komut dosyasında ne kadar sürdüğünü öğrenmek istiyorum. Bunu nasıl yapabilirim?Linux kabuk komut dosyasındaki bir süreyi saniye cinsinden nasıl ölçebilirim?
cevap
Diğerlerinin önerdiği gibi, zaman komutunu kullanmak iyi bir fikirdir.
Diğer bir seçenek, komut dosyasının başlatılmasından bu yana geçen saniye sayısını içeren sihirli yerleşik değişkeni $ SECONDS kullanmaktır. Sen söyleyebiliriz:
START_TIME=$SECONDS
dosomething
ELAPSED_TIME=$(($SECONDS - $START_TIME))
Bu bash özgü olduğunu düşünüyorum, ama eğer Linux üzerinde olduğuna göre, sana Bash kullandığınız varsayılmaktadır. Örneğin aşağıdaki
"Zaman" komutunu kullanabilirsiniz. Sadece, süreyi ölçmek istediğiniz komuttan önce "zaman" yazınız. (Kaynak: http://unixhelp.ed.ac.uk/CGI/man-cgi?time)
time
komutunu kullanın. time ls /bin
.
Dene: Sadece benim gibi kimseye yardım etmek
START_TIME=$SECONDS
# do something
sleep 65
ELAPSED_TIME=$(($SECONDS - $START_TIME))
echo "$(($ELAPSED_TIME/60)) min $(($ELAPSED_TIME%60)) sec"
#> 1 min 5 sec
bir hata alırsınız:
arithmetic expression: expecting primary: "-"
ile başlamak zorundadır senin shellscript kontrol edin:
#!/bin/bash
Şerefe!
Burada milisaniye cinsinden geçen süreyi bulmak için komut dosyası verilmiştir. Uyku 60 çizgisini, yürütmek istediğiniz kodla değiştirin. Eğer ** karmaşık komut dizisi yürütme zaman
a=0
while [ $a -lt 10 ]
do
START_TIME=`echo $(($(date +%s%N)/1000000))`
sleep 3
END_TIME=`echo $(($(date +%s%N)/1000000))`
ELAPSED_TIME=$(($END_TIME - $START_TIME))
echo $ELAPSED_TIME
if [ $a -eq 10 ]
then
break
fi
a=`expr $a + 1`
done
Milisaniye için makul bir çözüm. – Blaf
'Zamanı '** ** uygun değildir ** –
@ shiplu.mokadd.im No Ne hakkında: 'time (ls /; sleep 2; ls/bin)'. – Keith
Eğer '\' ve '()' yi kullanırsanız daha karmaşık hale geldi. –