Linux pv копирование файлов
Однако команда dd, как известно, при копировании файла не отображает прогресс бар для пользователя, поэтому непонятно сколько процентов файлов уже скопировано.
В этой статье мы рассмотрим как посмотреть прогресс dd в linux, этот метод подходит не только для dd, но и для всех подобных ей утилит.
Прогресс команды Linux с помощью progress
Установка progress
Эта утилита не поставляется с системой по умолчанию. Но установить ее очень просто, программа есть в официальных репозиториях большинства дистрибутивов. Например, в Ubuntu:
В других дистрибутивах она может быть более старой версии и назваться cv. Также вы можете собрать программу из исходников. Единственная зависимость - библиотека ncurces. В Ubuntu 16.04 ее можно установить такой командой:
В прежних версиях Ubuntu:
В Fedora и CentOS:
Когда удовлетворите зависимости утилиты, выполните следующую команду для загрузки исходников с GitHub:
Затем распакуйте полученный архив:
Измените текущий каталог с помощью cd:
Запустите сборку и установку:
Программа готова к работе.
Смотрим прогресс команды с помощью progress
После завершения установки запустите progress следующей командой:
В результате получится что-то вроде:
Теперь давайте запустим копирование видео из папки на рабочий стол и посмотрим что произойдет:
Команда progress покажет прогресс копирования cp:
Выполним progress еще раз:
Как видите, утилита показывает информацию о прогрессе копирования файла, процент скопированных данных, количество скопированных данных и общий размер файла. Это очень полезно при копировании больших файлов, например, при копировании фильмов или образов дисков. То же самое будет если запустить dd, mv, tar, zip или другую подобную утилиту.
В утилиты есть много полезных опций. Опция -w заставляет программу показывать время, оставшееся до окончания операции:
Вы можете отслеживать состояние процесса пока он запущен:
Если вы хотите постоянно наблюдать за прогрессом всех команд используйте опцию -М:
Или ее эквивалент:
Очень популярный вот такой вариант:
Также можно посмотреть прогресс linux только нужной программы, например, прогресс загрузки файла в firefox:
Или проверить активность web-сервера:
Способ второй - создание туннеля
То, что мы рассмотрели выше - не единственный способ посмотреть прогресс команды linux. Еще есть утилита pv. Она намного проще и выполняет только одну задачу - считает все данные проходящие через нее. Может читать поток из файла или стандартного ввода.
Поэтому ее можно использовать чтобы посмотреть прогресс выполнения команды в Linux. Например, создадим такой туннель для dd:
Здесь мы выдаем содержимое нужного нам файла на стандартный вывод, передаем утилите pv, а затем она отдает его другой утилите, которая уже выполняет запись в файл. Для cp такое сделать не получиться, но мы можем поступить немного по-другому:
Готово, здесь мы тоже получим прогресс команды копирования.
Выводы
Чтобы использовать всю мощь Linux пользователям часто приходится работать в командной строке. Чаще всего мы смотрим содержимое, копируем файлы, распаковываем архивы. В этой инструкции мы рассмотрели утилиту process, которую можно использовать для просмотра прогресса dd и других системных команд.
Мне всегда было интересно посмотреть прогресс копирования cp для больших файлов. Честно говоря, я часто имею дело с большими файлами при просмотре фильмов на своем ноутбуке.
Один мой друг сказал по поводу pv следующее «Я админю семь лет, мне нужна была эта тулза десятки раз, а я даже не знал что она существует». В размышлениях над тем как заполучить инвайт на Харбе, я набрал в поиске pv. И ничего не нашел.
И так pv — это сокращенно от pipeviewer, то есть ни много не мало как просмотрщик пайпов. Про эффективность использования пайпов расказывать не буду, ни для кого это не секрет. Единственное, «но» в работе с ними — это то, что набрав команду и нажав Enter часто не хватает самой малости — знать сколько времени займет ее выполнение. Именно cкорость обработки данных и будет нам показывать pv.
С лирикой покончено, перейдем к примерам.
Установка pv в Debian довольно тривиальна.
% sudo aptitude install pv
Дальше вводная, допустим вы такой же как и я счасливый обладатель каких-нибудь полезных логов и в какой-то момент у вас дошли руки их заархивировать, например так
% cat rt94-171-06 | gzip > rt94-171-06.gz
Есть мысли, сколько времени займет эта операция?
Тоже самое при помощи pv
%pv rt94-171-06 | gzip > rt94-171-06.gz
128MB 0:00:15 [ 9.1MB/s] [=====>. ] 18% ETA 0:01:07
Наглядно видно, что через пайп за 15 секунд прошло 128Мб — это 18% от всего объема, операция займет еще минуту и 7 секунд.
Может показаться, что pv это такая замена для cat, но на самом деле ее возможности намного шире. Например, упаковываем весь каталог в сжатый архив
%tar -czf - . | pv > out.tgz
21.9MB 0:00:15 [1.47MB/s] [. <=>. ]
Уже неплохо, но хочеться большего, чтобы показывалось время окончания работы. Для этого всего лишь надо при помощи ключа -s передать pv размер каталога в байтах
%tar -czf - . | pv -s $(du -sb | grep -o '4*') > out.tgz
44.3MB 0:00:27 [1.73MB/s] [>. ] 0% ETA 13:36:22
У меня вся операция займет 13 с половиной часов. Хех, накопил =)
Можно так же составлять команды из несколько копий pv.
%tar -cf - . | pv -cN tar -s $(du -sb | grep -o '9*') | gzip | pv -cN gzip > out.tgz
tar: 97.1MB 0:00:08 [12.3MB/s] [>. ] 0% ETA 1:50:26
gzip: 13.1MB 0:00:08 [1.6MB/s] [. <=>. ]
Ключ -c нужен, чтобы несколько копий pv не выводили информацию друг поверх друга. Ключ -N дает имя шкале.
Ну и под конец забавный пример с одного англоязычного блога о Линуксе
%pv /dev/urandom > /dev/null
18MB 0:00:05 [ 3,6MB/s] [. <=>. ]
Установка pv в Debian/Ubuntu
Установка pv утилиты, очень простая, выполняем:
Установка pv в CentOS/Fedora/RedHat
Для начала, подключаем репозиторий EPEL:
Установка pv утилиты, очень простая, выполняем:
Установка pv в FreeBSD
Установка pv утилиты, очень простая, выполняем:
Установка pv в Mac OS X
Устанавливаем homebrew: Установка homebrew на Mac OS X после чего, выполняем:
Установка pv в OpenSolaris
Если Вы пользователь OpenSolaris:
Установка pv для других Unix/Linux
Если не имеется пакета для установки, то переходим на официальную страницу pv, загружаем архив и выполняем ряд действий:
Опции для утилиты pv
pv принимает множество опций и сейчас я предоставлю их.
Коммутаторы (Display Switches)
Модификаторы вывода
Модификаторы передачи данных
Общие опции
ФОРМАТИРОВАНИЕ
Использование утилиты pv в Unix/Linux
Например, можно использовать утилиту pv вместо cat, следующим образом:
Собственно, все наглядно выглядит. Не правда ли?
Давайте упакуем некоторую папку в архив:
Так же, можно составлять команды из несколько копий pv:
Можно выводить прогресс-бар в виде цифр (в столбик), например:
Такс, например, вам нужно ограничить скорость изменять скорость передачи данных через pv утилиту. Например, я использовал -L для ограничения скорости передачи данных до 4МБ/с:
Как я уже описывал разные опции, но опишу опции еще раз:
Можно поигратся и выполнить:
Чтобы узнать как быстро компьютер читает с /dev/zero, выполните:
Обнуление диска, можно выполнить следющим образом:
Чтобы проверить тест пропускной способности сети ssh, выполните:
И так, команда что выше, подключается к хосту через ssh и отображает скорость передачи в реальном времени, направляя все переданные данные в /dev/null.
Пример использования pv и dd утилиты:
Чтобы поиграться, выполните:
Используя инструмент pv и dialog, вы можете создать панель выполнения следующим образом:
Работа pv + mysql в Unix/Linux
Создать mysqldump можно так:
Влить созданный mysqldump можно так:
Более нагляднее, будет:
Чтобы сделать его еще приятнее, вы можете добавить progres NAME, например:
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Главное меню » Операционная система Linux » Как следить за процессами в Linux с помощью команды PV и утилиты Progress
Через некоторое время вы вернулись, только чтобы увидеть, что команда все еще работает. Вы сами решаете, дать продолжатся операции копирования еще некоторое время. Через некоторое время, когда вы посмотрите еще раз, вы наблюдаете, что ничего не изменилось, то есть процесс копирования не закончился, и команда не показало ошибку.
Было бы лучше, если бы мы могли видеть прогресс бар (или нечто подобное) в подобных ситуациях, так же, как мы делаем, когда мы пытаемся скопировать файл через GUI? Определенно, индикатор выполнения для операций командной строки будет очень полезен. Если вы искали такое решение, не смотрите дальше, в этой статье мы рассмотрим две утилиты командной строки, PV и Progress, которые сделают жизнь проще для вас в командной строке.
Обратите внимание, что все команды и инструкции, которые мы уже упоминали в данном руководстве, были протестированы на Ubuntu 14.04.
Команда PV в Linux
Согласно официальной документации, команда PV контролирует поток данных через pipe. Команда выводит следующую информацию о текущей операции: время , прошедшее, процент завершения (с прогресс бар), текущую скорость, пропускная способность общего объема передаваемых данных, и ETA.
Теперь, покажем использование команды PV на примере. Но до этого, убедитесь, что утилита присутствует в вашей системе. Если нет, то вы можете легко загрузить и установить ее на системах Debian (например, Ubuntu) с помощью следующей команды:
Теперь, перейдем к примеру. На следующем рисунке показана команда PV в действии, когда я копирую, изображений хранится внутри директории на моем флэш-накопителе на рабочем столе моей системы:
Как вы можете видеть, команда PV отображается индикатор выполнения, а также другую полезную информацию. Это поведение по умолчанию команды. Тем не менее, если вы хотите ограничить вывод, вы можете сделать это, используя переключения дисплеев. Например, следующая команда будет отображаться только индикатор прогресса, и ничего больше.
Это потому, что мы использовали -p переключатель дисплея, который говорит pv только включить индикатор выполнения. Для получения полного списка переключателей дисплея, смотрите команды man page.
И, наконец, команда PV также предлагает некоторые модификаторы передачи данных. Например, если вы хотите, вы можете ограничить передачу определенного количества байтов в секунду. Если взглянуть на скриншот ранее, скорость передачи данных составляет более 18MBps. Теперь предположим, что вы хотите ограничить до 5Mbps, для этого вам необходимо выполнить следующую команду:
Команда Progress в Linux
Затем загрузите командный пакет Progress из репозитория GitHub с помощью следующей команды:
Войдите в каталог «Progress» и выполните следующие команды:
Вот и все. Команда Progress теперь будет установлена на вашем компьютере Linux. Следующий скриншот (взят из проекта на странице GitHub ) показывает команду в действии:
Как вы можете видеть, команда Progress дает вам информацию обо всех текущих операциях, которые включают команды Coreutils. Как и любой другой инструмент командной строки Linux, Progress также предлагает несколько вариантов командной строки. Ниже приведен список опций, которые могут быть полезными для вас:
Вывод
В то время как инструмент Progress ограничивается командами Coreutils, PV может быть использован и в целом контролировать любую команду строки активности. Кроме того, PV легко загрузить и установить. Но прежде чем идти вперед и заключить, что PV лучше, чем Progress, имейте в виду, что в отличие от PV, с прогрессом вы не должны изменить команду, которую вы хотите контролировать. Итак, какой из этих двух лучше в целом зависит от ваших требований.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Читайте также: