Мне нужно получить время работы программы сразу после ее закрытия, и я придумал это
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"
Эффективность достигается за счет устранения необходимости запуска внешних процессов.