более эффективный расчет времени выполнения процесса

более эффективный расчет времени выполнения процесса

Мне нужно получить время работы программы сразу после ее закрытия, и я придумал это

start=`date +"%M"`
while [ `pgrep vlc` ];do
        echo vlcopen > /dev/null
done
stop=`date +"%M"`

[ $stop -lt $start ]&&time=$[ 60-$start+$stop ]||time=$[ $stop-$start ]
echo $time > time.txt

и он выполняет свою работу, но это крайне неэффективно и требует много использования чашки, как мне сделать это более эффективно?

решение1

Один из вариантов — использоватьtime

Примечание: в Bash есть ключевое слово, timeпоэтому если вы это сделаете:

time some command

тот используется, SHELL_GRAMMAR: bash

Обычно timeв человеке можно обнаружить timeчто-то вроде/usr/bin/time

$ type -t time
keyword

Главное в использованиине Башвремя — это такие возможности, как -v(GNU time).

Также см:Что означают «real», «user» и «sys» в выводе time(1)?

решение2

ИспользоватьSECONDSпеременная bash:

SECONDS=0

# do stuff here, such as
sleep 5

duration=$SECONDS

echo "The stuff took $duration seconds to complete"

Эффективность достигается за счет устранения необходимости запуска внешних процессов.

Связанный контент