Как игнорировать вывод программы при использовании / usr / bin / time? - PullRequest
4 голосов
/ 27 октября 2010

Я хочу знать, как долго работает программа, поэтому я попробовал "/ usr / bin / time ./program> / dev / null". Но вскоре я обнаружил, что он отображает вывод программы в stderr. Затем я попытался "/ usr / bin / time ./program> / dev / null 2> & 1", но вывод / usr / bin / time не появился. Поэтому мой вопрос заключается в том, как игнорировать вывод программы и сохранять вывод времени.

Большое спасибо.

Ответы [ 2 ]

7 голосов
/ 27 октября 2010

Используйте флаг -o, чтобы отправить результат от времени чему-то другому, чем stderr.Например, если вы все еще хотите это на экране:

/usr/bin/time -o /dev/tty ./program >/dev/null 2>&1

Или, если вы хотите выводить на stdout очень плохо:

/usr/bin/time sh -c './program >/dev/null 2>&1'

или подобное.Однако теперь вы также измеряете время оболочки, чтобы начать процесс, что может быть или не быть проблемой.

1 голос
/ 15 декабря 2010

(Невозможно комментировать)

Возможно, было бы лучше использовать подоболочку:

/usr/bin/time ( ./program > /dev/null 2>&1 ) 2>&1

Или еще лучше составную конструкцию:

/usr/bin/time { ./program > /dev/null 2>&1; } 2>&1
...