Утилита pv — прогресс bar для консольных утилит в Unix/Linux
pv — это утилита которая имеет сокращение от pipeviewer и позволяет пользователю видеть прогресс
выполнение той или иной команды по конвейеру и предоставляя информацию (прошедшее время, процент завершения
(с индикатором выполнения), текущую пропускную способность, общий объем данных и ETA) — это просмоторщик пайпов.
Установка pv в Debian/Ubuntu
Установка pv утилиты, очень простая, выполняем:
#aptitude install pv
или
#apt-get install pv
Установка pv в CentOS/Fedora/RedHat
Для начала, подключаем репозиторий EPEL:
Включить EPEL репозиторий
Установка pv утилиты, очень простая, выполняем:
#yum install pv
Установка pv в FreeBSD
Установка pv утилиты, очень простая, выполняем:
#cd /usr/ports/sysutils/pv/
# make install clean
Или:
#pkg_add -r pv
Установка pv в Mac OS X
Устанавливаем homebrew: Установка homebrew на Mac OS X после чего, выполняем:
#brew install pv
Установка pv в OpenSolaris
Если Вы пользователь OpenSolaris:
#pfexec pkg install pv
Установка pv для других Unix/Linux
Если не имеется пакета для установки, то переходим на официальную страницу pv, загружаем архив и выполняем
ряд действий:
#tar -zxf pv-version.tar.gz
# cd pv-version
# ./configure && sudo make install
Опции для утилиты pv
pv принимает множество опций и сейчас я предоставлю их.
Коммутаторы (Display Switches)
Если не указаны опции для вывода, pv ведет себя так, как если бы вы
задали «-p», «-t», «-e», «-r» и «-b» (т.е. все включено). В
противном случае будут показаны только те типы вывода, которые явно включены:
-p, —progress — Включает индикатор выполнения. Если стандартный ввод не является файлом и не
задан размер (с модификатором «-s»), индикатор выполнения не может отобразить корректно данные,
насколько близок к завершению передачи, поэтому он просто перемещается влево и вправо, чтобы показать что
данные перемещаются.
-t, —timer — Включить таймер. Это покажет общее время, в течение которого pv работает.
-e, —eta — Включить таймер ETA. Утилита попытается угадать, как долго до завершения, исходя
из предыдущих скоростей передачи и общего размера данных. Этот параметр не будет иметь эффекта, если общий
размер данных не может быть определен.
-r, —rate — Включите счетчик скорости. Это покажет текущую скорость передачи данных.
-b, —bytes — Включите счетчик для общего отображения байт. На нем отобразится общий объем
переданных данных.
-n, —numeric — Цифровой выход. Вместо того, чтобы визуально показывать прогресс, pv даст
целочисленный процент, по одной на строку, по стандартной ошибке, подходящий для пайпа (через свернутое
перенаправление) в диалоговом окне (dialog). Обратите внимание, что опция «-f» не требуется, если
используется «-n» опция.
-q, —quiet — Запретить вывод. Полезно, если опция «-L» используется сама по себе,
чтобы просто ограничить скорость передачи в пайпе.
Модификаторы вывода
-W, —wait — Ждать, пока первый байт не будет перенесен, прежде чем показывать какую-либо
информацию о ходе или вычислять любые ETA. Полезно, если программа к которой вы подключаетесь, требует дополнительной информации до ее запуска, например, для передачи данных в gpg или mcrypt, которые требуют кодовой фразы, прежде чем данные могут быть обработаны.
-s SIZE, —size SIZE — Предположим, что общий объем передаваемых данных — это SIZE байт при вычислении процентов и ETA. Те же суффиксы «k», «m» и т. Д. Могут использоваться с «-L».
-l, —line-mode — Вместо подсчета байтов, подсчитываеться строки (символы новой строки). Полоса выполнения будет двигаться только при обнаружении новой строки, а значение, переданное в параметр «-s», будет интерпретироваться для счета строки.
-i SEC, —interval SEC — Ждать SEC секунд между обновлениями. Значение по умолчанию — обновлять каждую секунду. Обратите внимание, что это может быть десятичное число, такое как 0,1.
-w WIDTH, —width WIDTH — Предположим, что терминал имеет ширину WIDTH, вместо того, чтобы пытаться его угадать (или назначить 80, если это невозможно предугадать).
-H HEIGHT, —height HEIGHT — Предположим, что терминал имеет HEIGHT высоту, вместо того, чтобы пытаться его угадать (или назначить 25, если это невозможно предугадать).
-N NAME, —name NAME — Префикс выводимой информации с помощью NAME. Полезно в сочетании с «-c», если у вас сложный пайп и вы хотите, чтобы он мог разделить вывод на разные части.
-f, —force — Пренудительный вывод. Обычно pv не выводит никакого визуального вывода, если стандартная ошибка не является терминалом. Этот параметр заставляет это показать.
-c, —cursor — Используйте escape последовательности позиционирования курсора вместо использования возврата каретки. Это полезно в сочетании с «-N (name)», если вы используете несколько pv запросов и соединяете его в один длинный конвейер.
Модификаторы передачи данных
-L RATE, —rate-limit RATE — Ограничьте передачу до максимального RATE байта в секунду. Суффикс «k», «m», «g», или «t» могут быть добавлены для обозначения килобайт (*1024), мегабайт и т. д.
-B BYTES, —buffer-size BYTES — Использовать размер буфера передачи BYTES байтов. Суффикс «k», «m», «g», или «t»могут быть добавлены для обозначения килобайт (*1024), мегабайт и т. д. Размер буфера по умолчанию — это размер блока файловой системы входного файла, умноженный на 32 (максимальный 512kb) или 400 кбайт, если размер блока не может быть определен.
-R PID, —remote PID — Если PID является экземпляром pv, который уже запущен, -R PID заставит этот экземпляр действовать так, как если бы ему была назначена командная строка этого экземпляра. Например, если запустить «pv -L 123k» и он имеет 9876 ID процесс, тогда запуск «pv -R 9876 -L 321k» заставит его начать использовать ограничение скорости 321k вместо 123k. Обратите внимание, что во время работы некоторые параметры не могут быть изменены, например «-c», «-l» и «-f».
Общие опции
-h, —help — Выводит показать справку об использовании данной утилиты и завершает работу.
-V, —version — Выводит версию ПО и завершает работу.
ФОРМАТИРОВАНИЕ
Если задана опция «-F», формат вывода можно определить строкой формата. Внутри этой строки могут использоваться следующие последовательности:
%p — Индикатор выполнения. Развертывается, чтобы заполнить оставшееся пространство. Следует указывать только один раз. Эквивалентно «-р» опиции.
%t — Пройденное время. Эквивалентно «-t» опции.
%e — Оставшееся время (ETA). Эквивалентно «-e»опции.
%I — Время завершения (ETA). Эквивалентно «-I»опции.
%r — Текущая скорость передачи данных. Эквивалентно «-r» опции.
%a — Средняя скорость передачи данных. Эквивалентно «-a» опции.
%b — Байты, передаваемые до сих пор (или строки, если указано «-l» опция). Эквивалентно «-b» опции.
%T — Процент используемого буфера передачи. Эквивалентно «-T» опции. Показывает «{—-}» если передача выполняется с помощью splice, поскольку сплайсинг в/из пайп(а) не использует буфер.
%nA — Показать последние n записанных байтов, (например, %16A — последние 16 байт). Показывает только точки, если передача выполняется с помощью splice, поскольку сплайсинг в/из пайп(а) не использует буфер.
Такс, например, вам нужно ограничить скорость изменять скорость передачи данных через pv утилиту.
Например, я использовал -L для ограничения скорости передачи данных до 4МБ/с:
И так, команда что выше, подключается к хосту через ssh и отображает скорость передачи в реальном
времени, направляя все переданные данные в /dev/null.