Если вы системный администратор Linux, нет никаких сомнений в том, что вы, должно быть, проводите большую часть своего рабочего времени в командной строке — устанавливая и удаляя пакеты; мониторинг статистики системы; копирование, перемещение, удаление вещей; проблемы отладки; и более. Бывают случаи, когда вы запускаете команду, и до завершения операции проходит некоторое время. Однако бывают случаи, когда выполненная вами команда просто зависает, и вам приходится гадать, что на самом деле происходит за кулисами.
Обычно команды Linux не предоставляют никакой информации о ходе текущей операции, что очень важно, особенно когда у вас ограничено время. Однако это не значит, что вы беспомощны — существует команда, получившая название pv
, которая отображает полезную информацию о ходе выполнения текущей операции командной строки. В этой статье мы обсудим эту команду, а также ее функции на нескольких простых для понимания примерах.
Команда PV
Разработанное Эндрю Вудом, PV – что означает Pipe Viewer – отображает информацию, связанную с прохождением данных по конвейеру. Информация включает в себя прошедшее время, процент выполнения (с индикатором выполнения), текущую скорость пропускной способности, общий объем переданных данных и расчетное время прибытия.
“Чтобы использовать его, вставьте его в конвейер между двумя процессами с соответствующими параметрами. Его стандартный ввод будет передан на стандартный вывод, а прогресс будет отображаться в виде стандартной ошибки»,
Выше объясняется справочная страница команды.
Загрузка и установка
Команда PV
стем на базе Debian, таких как Ubuntu, могут легко установить утилиту, выполнив в терминале следующую команду:sudo apt-get install pv
Если вы используете любой другой дистрибутив Linux, вы можете установить команду с помощью менеджера пакетов, установленного в вашей системе. После успешной установки вы можете использовать утилиту командной строки в различных сценариях (см. следующий раздел). Стоит отметить, что во всех примерах, упомянутых в этой статье, использовалась версия 1.2.0.
Функции и использование
Очень распространенный сценарий, который, вероятно, знаком большинству из нас (тех, кто работает с командной строкой в Linux), — это коп
Загрузка и установка
акопителя на ваш компьютер. Если вы попытаетесь выполнить вышеупомянутую операцию с помощью командыcp
, вам придется слепо ждать завершения копирования или возникновения какой-либо ошибки.
Однако в этом случае может помочь команда pv
. Вот пример:
pv /media/himanshu/1AC2-A8E3/fNf.mkv > ./Desktop/fnf.mkv
И вот результат:
Итак, как вы можете видеть выше, команда показывает много полезной информации, связанной с текущей операцией, включая объем переданных данных, затраченное время, скорость передачи, индикатор выполнения, прогресс в процентах и оставшееся время.
Команда pv
предоставляет различные переключатели отображения. Например, вы можете использовать -p
для отображения процентов, -t
для таймера, -r
для скорости передачи, -e
для эта и -b
для счетчика байтов. Хорошо, что вам не придется запоминать ни один из них, поскольку все они включены по умолчанию. Однако если вам требуется информация, относящаяся только к определенному переключателю отображения в выходных данных, вы можете передать этот переключатель в команде pv
.
Также имеется переключатель отображения -n
, который позволяет
Функции и использование
в процентах, по одному на строку при стандартной ошибке, вместо обычного визуального индикатора прогресса. Ниже приведен пример этого переключателя в действии:pv -n /media/himanshu/1AC2-A8E3/fNf.mkv > ./Desktop/fnf.mkv
Этот конкретный переключатель отображения подходит в сценариях, где вы хотите передать вывод в команду диалог .
Двигаясь дальше, есть также параметр командной строки -L
, который позволяет изменять скорость передачи данных команды pv. Например, я использовал -L
, чтобы ограничить скорость передачи данных до 2 МБ/с.
pv -L 2m /media/himanshu/1AC2-A8E3/fNf.mkv > ./Desktop/fnf.mkv
Как видно на скриншоте выше, по моему указанию скорость передачи данных была ограничена.
Другой сценарий, в котором pv
может помочь, — это сжатие файлов. Вот пример того, как вы можете использовать эту команду при сжатии файлов с помощью Gzip:
pv /media/himanshu/1AC2-A8E3/fnf.mkv | gzip > ./Desktop/fnf.log.gz
Заключение
Как вы заметили, pv
— это небольшая полезная утилита, которая может помочь вам сэкономить ваше драгоценное время в случае, если операция командной строки работает не так, как ожидалось. Кроме того, отображаемая информация также может использоваться в сценариях оболочки. Я настоятельно рекомендую эту команду; стоит попробовать.