Понадобилось померить объём занимаемой памяти и время выполнения последовательности команд, передающих данные через stdout/stdin. Для определённости:
tar -c Dump/ | lzop > dump.tar.lzop
Встроенная в bash команда time меряет только время. /usr/bin/time -v даёт необходимую информацию, но не воспринимает командную строку за | и >.
По команде
/usr/bin/time -v tar -c Dump/ | lzop > dump.tar.lzop
С
/usr/bin/time -v $( tar -c Dump/ | lzop > dump.tar.lzop)
После
/usr/bin/time -v { tar -c Dump/ | lzop > dump.tar.lzop}
Поправка: надо было писать не $(...) и {...}, а (...) и {...;}, но time с ними всё равно не работает.
Как применить time к последовательности команд, передающих данные через пайпы? Только писать time отдельно для tar и для lzop?
Заранее спасибо.
Ответ:
/usr/bin/time -v bash -c 'tar -c Dump/ | lzop > dump.tar.lzop'
А для подстановки переменной лучше всего оказалось ставить
/usr/bin/time -v bash -c 'tar -c '"$somepath"' | lzop > dump.tar.lzop'