Используйте команду Pv для мониторинга хода обработки данных в Linux
Представьте себе этот сценарий. Вы пытаетесь скопировать большой файл из одного каталога в другой или из одной системы в другую через командную строку. Как вы, вероятно, знаете, вы не увидите никаких признаков задачи копирования, если используете команду «cp». Вы просто увидите пустой экран. Вы не можете быть уверены, идет ли процесс копирования или нет, пока процесс копирования не завершится. В таких случаях вы можете использовать команду pv для отслеживания хода обработки данных. Команда pv, аббревиатура от pipe viewer, позволяет пользователю видеть ход передачи данных по конвейеру, предоставляя следующую информацию:
- общее время, прошедшее,
- процент выполнения (с индикатором выполнения),
- текущая пропускная способность,
- общее количество переданных данных,
- и ЭТА.
В этом кратком руководстве мы увидим, как и где использовать команду pv для мониторинга хода данных в Unix-подобных системах.
Установить пв в Linux
В большинстве современных дистрибутивов Linux предустановлена команда pv. На тот случай, если он еще не установлен, вы можете установить его, выполнив следующую команду из своего терминала, в зависимости от используемого вами дистрибутива Linux.
В Arch Linux, Antergos, Manjaro Linux:
sudo pacman -S pv
В RHEL, CentOS, Fedora:
sudo yum install pv
Или,
sudo dnf install pv
В Debian, Linux Mint, Ubuntu:
sudo apt-get install pv
В SUSE openSUSE:
sudo zypper in pv
Теперь мы установили PV. Позвольте мне показать вам несколько примеров.
Мониторинг прохождения данных по каналу с помощью команды «pv»
Посмотрите на вывод следующей команды:
cp CentOS7.iso Downloads/
команда cp
Эта команда копирует ISO-образ CentOS 7 в каталог Загрузки в моей локальной системе. Как вы видите в приведенном выше выводе, индикатор выполнения не отображается. Вы увидите только мигающий курсор. Мы не знаем, сколько времени займет процесс копирования. Иногда это может раздражать, поскольку мы не видим никаких признаков завершения выполнения этой команды. Здесь на помощь приходит команда pv. Команда pv покажет вам ход выполнения команд Linux и покажет, когда команда Linux завершится. Таким образом, вы можете выйти из Терминала и выполнить некоторые другие задачи и вернуться, когда задача будет выполнена.
Теперь давайте сделаем то же самое с помощью средства просмотра каналов (pv) и посмотрим, что получится на выходе.
pv CentOS7.iso > Downloads/centos.iso
Мониторинг прохождения данных по каналу с помощью команды «pv»
Видишь, ты уловил разницу? Как я уже сказал, команда pv отображает общее затраченное время, процент выполнения (с индикатором выполнения), текущую пропускную способность, общий объем переданных данных и расчетное время прибытия.
Позвольте мне привести вам еще несколько примеров.
Мы можем ограничить скорость передачи данных с помощью переключателя -L, как показано в примере ниже.
pv -L 2m CentOS7.iso > Downloads/centos.iso
Приведенная выше команда ограничит скорость передачи данных до 2 МБ в секунду. Посмотрите на следующий вывод.
Ограничьте скорость передачи данных с помощью команды pv.
Если у вас несколько файлов или каталогов, вы можете использовать pv с командой tar, как показано ниже:
tar c Notebooks/ | pv | tar x -C Documents/
Приведенная выше команда сожмет каталог «Блокноты», скопирует его в каталог «Документы» и, наконец, извлечет содержимое.
Вот еще один пример. Эта команда создаст архив файла CentOS7.iso и сохранит его в текущем рабочем каталоге.
pv CentOS7.iso | zip > centos.zip
создать файл архива с помощью команды pv
Вы также можете использовать pv с командой dd для копирования файлов между каталогами, как показано ниже. Эта команда копирует файл CentOS7.iso из текущего каталога в каталог «Загрузки».
dd if=CentOS7.iso | pv | dd of=Downloads/centos7.iso
используйте команду pv с командой dd для копирования файлов между каталогами
Еще одна полезная команда для отображения хода обработки данных — dialog. Мы можем использовать его вместе с командой pv, чтобы показать ход обработки данных, как показано ниже.
tar -czf - Official/ | (pv -n > mybackup.tgz) 2>&1 | dialog --gauge "Compressing files, please wait..." 10 70 0
Пример вывода:
используйте команду диалога с командой pv, чтобы показать ход обработки данных
Более подробную информацию можно найти на страницах руководства.
man pv
Также ознакомьтесь с нашим предыдущим руководством по быстрой передаче больших файлов между двумя удаленными системами по сети с помощью команд netcat, tar и pv в Linux и Операционные системы Unix.
- Как быстро передавать большие файлы по сети в Linux и Unix
Обновление:
Индикатор выполнения для команд «cp» и «mv» можно легко добавить с помощью патча под названием «Advanced Copy». Для получения подробной информации проверьте следующую ссылку.
- Расширенное копирование: добавление индикатора выполнения к командам cp и mv в Linux