4

Недавно я обнул диск с помощью следующей команды:

# pv /dev/zero > /dev/sdd

Глядя на пропускную способность и оставшееся время согласно pv , он правильно оценил / рассчитал / знал размер диска - 120 ГБ - с самого начала операции.

Мой вопрос: как pv узнал об этом, когда его вывод перенаправляется таким образом?

1 ответ1

3

От man 1 pv:

Обратите внимание, что если размер ввода не может быть рассчитан, а выход является блочным устройством, тогда будет использован размер блочного устройства, и pv автоматически остановится на этом размере, как если бы был задан -S .

Это «как будто -S », чтобы избежать "не осталось места на устройстве" и успешно завершить работу.


Если вам интересно, почему pv может знать размер своего стандартного вывода, тогда ответ таков:

Это не тот случай, когда pv потоки передаются на fifo, а затем оболочка читает fifo и записывает в /dev/sdd . Что происходит, так это то, что оболочка заставляет дескриптор файла pv 1 указывать на /dev/sdd с самого начала, поэтому процесс может обнаружить, что это блочное устройство, запросить его размер и т.д.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .