Как использовать команду времени в bash, чтобы сложить sys + пользовательское время и вывести его в виде миллисекунд?

Команда time возвращает такую ​​таблицу?

real      0m1.607s
user    0m0.154s
sys 0m0.032s

Я запускаю это внутри сценария оболочки. Какой самый простой способ обработать вывод time, чтобы я получил переменную $RUNTIME, которая хранит сумму user + sys в миллисекундах?

1
задан 7 February 2017 в 04:05

2 ответа

Если бы необходимо использовать удар 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
0
ответ дан 7 February 2017 в 04:05

Сделайте это

Выполнение Ваше использование команды ниже сценария, замена 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

Источники

Как к grep со времени

вывод Перенаправления команды времени в Unix в переменную в ударе?

0
ответ дан 7 February 2017 в 04:05

Другие вопросы по тегам:

Похожие вопросы: