Подавить вывод команды во время записи вывода из «времени» - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть какая-то команда, которая запускается таким образом:

./mycommand -arg=word

Я измеряю время выполнения и записываю вывод в файл:

/usr/bin/time -f "%K %e" ./mycommand -arg=word 2>file

Однако, mycommand также выводит stderr,Таким образом, file содержит смешанные данные из обоих (time и mycommand).Как я могу подавить вывод mycommand и сохранить данные time?

1 Ответ

0 голосов
/ 04 декабря 2018

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

/usr/bin/time -f "%K %e" sh -c '"$0" "$@" >/dev/null 2>&1' ./mycommand -arg=word

Я бы также предложил использовать встроенную в bash версию time вместо внешней, что позволяет использовать приемы, описанные в BashFAQ # 32 :

TIMEFORMAT='%R' # replace for whatever is equivalent to your "%K %e"
timing=$(time { ./mycommand >/dev/null 2>&1; } 2>&1)
...