Как измерить длительность в секундах в сценарии оболочки?
Я хочу узнать, сколько времени занимает операция в скрипте оболочки Linux. Как я могу это сделать?
6 ответов:
использование команды time, как предлагали другие, является хорошей идеей.
другой вариант-использовать встроенную переменную magic $SECONDS, которая содержит количество секунд с момента запуска скрипта. Вы можете сказать:
START_TIME=$SECONDS dosomething ELAPSED_TIME=$(($SECONDS - $START_TIME))
Я думаю, что это специфично для bash, но поскольку вы находитесь на Linux, я предполагаю, что вы используете bash.
попробуйте следующий пример:
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
вы можете использовать команду "Время". Просто добавьте "время" перед командой, которую вы хотите измерить продолжительность. (Источник: http://unixhelp.ed.ac.uk/CGI/man-cgi?time )
вот сценарий, чтобы найти время, прошедшее в миллисекундах. Замените строку sleep 60 кодом, который вы хотите выполнить.
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