Linux прогресс выполнения команды

Как посмотреть прогресс копирования в Linux

Однако команда dd, как известно, при копировании файла не отображает прогресс бар для пользователя, поэтому непонятно сколько процентов файлов уже скопировано.

В этой статье мы рассмотрим как посмотреть прогресс dd в linux, этот метод подходит не только для dd, но и для всех подобных ей утилит.

Но есть очень простое решение, и даже два. Первое, это утилита Coreutils Viewer или progress (раньше известная как cv). Программа написана на С и ищет выполняемые в данный момент в системе программы такие как: mv, cp, dd, tar, unzip и т д и отображает процент скопированных данных. Второе, более интересное. Мы можем направить данные через туннель pv, который будет считать с какой скоростью они передаются и сколько еще осталось. Рассмотрим сначала первый способ.
Содержание статьи:

Прогресс команды Linux с помощью progress

Установка progress

Эта утилита не поставляется с системой по умолчанию. Но установить ее очень просто, программа есть в официальных репозиториях большинства дистрибутивов. Например, в Ubuntu:

В других дистрибутивах она может быть более старой версии и назваться cv. Также вы можете собрать программу из исходников. Единственная зависимость — библиотека ncurces. В Ubuntu 16.04 ее можно установить такой командой:

В прежних версиях Ubuntu:

В Fedora и CentOS:

Когда удовлетворите зависимости утилиты, выполните следующую команду для загрузки исходников с GitHub:

Затем распакуйте полученный архив:

Измените текущий каталог с помощью cd:

Запустите сборку и установку:

Программа готова к работе.

Смотрим прогресс команды с помощью progress

После завершения установки запустите progress следующей командой:

В результате получится что-то вроде:

Теперь давайте запустим копирование видео из папки на рабочий стол и посмотрим что произойдет:

Команда progress покажет прогресс копирования cp:

Выполним progress еще раз:

Как видите, утилита показывает информацию о прогрессе копирования файла, процент скопированных данных, количество скопированных данных и общий размер файла. Это очень полезно при копировании больших файлов, например, при копировании фильмов или образов дисков. То же самое будет если запустить dd, mv, tar, zip или другую подобную утилиту.

В утилиты есть много полезных опций. Опция -w заставляет программу показывать время, оставшееся до окончания операции:

Если вы хотите видеть упрощенный вывод без дополнительных сообщений используйте опцию -q. И наоборот для показа всех предупреждений и ошибок воспользуйтесь -d. Например, лучше использовать cv со следующими опциями:

Вы можете отслеживать состояние процесса пока он запущен:

Если вы хотите постоянно наблюдать за прогрессом всех команд используйте опцию -М:

Или ее эквивалент:

Очень популярный вот такой вариант:

Также можно посмотреть прогресс linux только нужной программы, например, прогресс загрузки файла в firefox:

Или проверить активность web-сервера:

Способ второй — создание туннеля

То, что мы рассмотрели выше — не единственный способ посмотреть прогресс команды linux. Еще есть утилита pv. Она намного проще и выполняет только одну задачу — считает все данные проходящие через нее. Может читать поток из файла или стандартного ввода.

Читайте также:  Нужны ли вообще обновления windows

Поэтому ее можно использовать чтобы посмотреть прогресс выполнения команды в Linux. Например, создадим такой туннель для dd:

Здесь мы выдаем содержимое нужного нам файла на стандартный вывод, передаем утилите pv, а затем она отдает его другой утилите, которая уже выполняет запись в файл. Для cp такое сделать не получиться, но мы можем поступить немного по-другому:

Готово, здесь мы тоже получим прогресс команды копирования.

Выводы

Чтобы использовать всю мощь Linux пользователям часто приходится работать в командной строке. Чаще всего мы смотрим содержимое, копируем файлы, распаковываем архивы. В этой инструкции мы рассмотрели утилиту process, которую можно использовать для просмотра прогресса dd и других системных команд.

Мне всегда было интересно посмотреть прогресс копирования cp для больших файлов. Честно говоря, я часто имею дело с большими файлами при просмотре фильмов на своем ноутбуке.

Источник

🐧 Альтернативы команды cp на Linux для демонстрации прогресса и скорости

Вы когда-нибудь хотели увидеть скорость и прогресс при копировании файлов с помощью командной строки?

Для копирования файлов, папок и других данных вы, вероятно, использовали бы команду ditto или «cp», если вы знакомы с командной строкой операционных систем Linux или Unix.

Хотя команды ditto и «cp» полезны, иногда использование простой команды «cp» может занять много времени и утомить.

Параметр «-v» (подробный) в команде «cp» может предоставить вам дополнительную информацию о процессе копирования.

Однако недостатком является то, что эта команда не включает индикатор хода процесса копирования.

В Linux есть другие альтернативные команды, которые могут копировать файлы и папки, показывая ход и скорость процесса копирования. Ниже приведены альтернативные команды:

1. Команда rsync

«Rsync» – одна из лучших команд, которая помогает копировать файлы через терминал.

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

Он также используется для создания резервных копий данных, копирования данных между компьютерами и зеркалирования.

Команда «rsync» имеет следующий синтаксис:

Использование опции «-av» с «rsync» – самая простая форма этой команды.

Как показано ниже, данная команда скопирует все файлы, находящиеся в «testfolder», в целевую папку с именем «Downloads»:

Источник

linux-notes.org

Утилита pv — прогресс bar для консольных утилит в Unix/Linux

pv — это утилита которая имеет сокращение от pipeviewer и позволяет пользователю видеть прогресс выполнение той или иной команды по конвейеру и предоставляя информацию (прошедшее время, процент завершения (с индикатором выполнения), текущую пропускную способность, общий объем данных и ETA) — это просмоторщик пайпов.

Установка 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 ведет себя так, как если бы вы задали «-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» используется сама по себе, чтобы просто ограничить скорость передачи в пайпе.
Читайте также:  Svchost грузит память windows 10 решение проблемы

Модификаторы вывода

  • -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».
Читайте также:  Как загружаются драйверы windows

Общие опции

  • -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, поскольку сплайсинг в/из пайп(а) не использует буфер.
  • %N — Префикс имени, присвоенный «-N» опцией.
  • %% — Один %. Стандартная строка, эквивалентная включению всех переключателей вывода (display switches), `%N %b %T %t %r %a %p %e’.

Использование утилиты pv в Unix/Linux

Например, можно использовать утилиту pv вместо cat, следующим образом:

Собственно, все наглядно выглядит. Не правда ли?

Давайте упакуем некоторую папку в архив:

Наглядно, но не знаешь когда операция завершиться, по этому, давайте добавим ключ «-s» чтобы вывести ETA, например:

Так же, можно составлять команды из несколько копий pv:

Можно выводить прогресс-бар в виде цифр (в столбик), например:

Такс, например, вам нужно ограничить скорость изменять скорость передачи данных через pv утилиту. Например, я использовал -L для ограничения скорости передачи данных до 4МБ/с:

Как я уже описывал разные опции, но опишу опции еще раз:

  • -c — Данная опция не выводит информацию друг поверх друга.
  • -N — Называем шкалу определенным именем.

Можно поигратся и выполнить:

Чтобы узнать как быстро компьютер читает с /dev/zero, выполните:

Обнуление диска, можно выполнить следющим образом:

Чтобы проверить тест пропускной способности сети ssh, выполните:

И так, команда что выше, подключается к хосту через ssh и отображает скорость передачи в реальном времени, направляя все переданные данные в /dev/null.

Пример использования pv и dd утилиты:

Чтобы поиграться, выполните:

Используя инструмент pv и dialog, вы можете создать панель выполнения следующим образом:

Работа pv + mysql в Unix/Linux

Создать mysqldump можно так:

Влить созданный mysqldump можно так:

Более нагляднее, будет:

Чтобы сделать его еще приятнее, вы можете добавить progres NAME, например:

Вот и все, статья «Утилита pv — прогресс bar для консольных утилит в Unix/Linux» завершена.

Добавить комментарий Отменить ответ

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Источник

Оцените статью