Я смотрел эту команду
tar cf - 20180412 -P | pv -s $(du -sb 20180412 | awk '{print $1}') | gzip > 20180412.tar.gz
9.02GiB 0:01:20 [ 114MiB/s] [===================================================================================================================================================================>] 100%
и задавался вопросом, как можно pv
работай. Я думал, что трубы жаждут, но я думаю, что это pv
может работать правильно, только если трубы ленивы.
Итак, bash pipe ленив или нетерпелив?
Поведение трубы вообще не имеет значения для цели этой команды.
Хотя tar
может начаться первым, он обычно питает трубу, начиная с нулевого времени, поэтому очень скоро он заблокируется на трубе и будет ждать pv
для начала потребления. В очереди, pv
даже не запускается перед командами внутри $( )
начать и закончить.
Практически не имеет значения, если pv
запускается как можно скорее или ожидает появления первого байта в конвейере (ответ: кстати, как можно скорее).
Вы можете пропустить то, что du
оценивает входной каталог (не tarfile) и в то же время tar
читает тот же входной каталог самостоятельно.