Команда time
возвращает такую таблицу?
real 0m1.607s
user 0m0.154s
sys 0m0.032s
Я запускаю это внутри сценария оболочки. Какой самый простой способ обработать вывод time
, чтобы я получил переменную $RUNTIME
, которая хранит сумму user + sys в миллисекундах?
Если бы необходимо использовать удар time
встроенная функция, я использовал бы следующую команду:
a=$(echo $( TIMEFORMAT="%3U + %3S"; { time your_command; } 2>&1) "*1000" | bc -l)
Примеры:
a=$(echo $( TIMEFORMAT="%3U + %3S"; { time sleep 1; } 2>&1) "*1000" | bc -l)
echo $a
2.000
a=$(echo $( TIMEFORMAT="%3U + %3S"; { time sudo hdparm -t -T /dev/sda 2>&1 >/dev/null; } 2>&1) "*1000" | bc -l)
echo $a
2302.137
Сделайте это
Выполнение Ваше использование команды ниже сценария, замена your_command
.
$ ALL_TIME=`(time your_command) 2>&1 | grep -E "user|sys" | sed s/[a-z]//g`
теперь переменные ALL_TIME хранят два значения: '
$ echo $ALL_TIME
00.001 00.003
Теперь необходимо суммировать значения. Используйте сценарий ниже
, не забывают устанавливать ВРЕМЯ ВЫПОЛНЕНИЯ на нулевые .
$ RUNTIME=0
$ for i in $ALL_TIME; do RUNTIME=`echo "$RUNTIME + $i"|bc`; done
$ echo $RUNTIME
.004
вывод Перенаправления команды времени в Unix в переменную в ударе?