Как измерить длительность в секундах в сценарии оболочки?


Я хочу узнать, сколько времени занимает операция в скрипте оболочки Linux. Как я могу это сделать?

6 62

6 ответов:

использование команды time, как предлагали другие, является хорошей идеей.

другой вариант-использовать встроенную переменную magic $SECONDS, которая содержит количество секунд с момента запуска скрипта. Вы можете сказать:

START_TIME=$SECONDS
dosomething
ELAPSED_TIME=$(($SECONDS - $START_TIME))

Я думаю, что это специфично для bash, но поскольку вы находитесь на Linux, я предполагаю, что вы используете bash.

использовать . time ls /bin.

попробуйте следующий пример:

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

просто чтобы помочь всем, как я, которые получают сообщение об ошибке:

 arithmetic expression: expecting primary: "-"

проверьте свой shellscript, который должен начинаться с:

#!/bin/bash

Ура!