Прогресс бар linux bash

linux-notes.org

Когда начал писать скрипты на bash и пользоваться консольными утилитами, мне потребовалось следить за выполнением задач, а именно, сколько же времени потребуется на ту или иную задачу. Не во всех утилитах есть прогресс бар. И в своей теме «Прогресс bar для консольных утилит в Unix/Linux» я расскажу про утилиту bar и как ее установить и использовать.

Bar — это небольшой скрипт который предназначен для использования для показа прогресс баров в консольных утилитах, а так же bash скриптов.

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

Чтобы скачать ее, используйте:

И скопируем утилиту в нужное место для дальнейшего использования:

Примеры использования программы bar.

Приведу несколько наглядных примеров работы данной утилиты.

—Склеивание файлов.

—Копирование файлов.

или с помощью bar:

—Скопировать несколько файлов в другой каталог (и показать прогресс бар).

или с помощью bar:

—Распаковать каждый файл по отдельности, но показать общий процесс бар.

—Создать список файлов.

Опции для утилиты bar

PS: Есть лучшее решение, но об этом в следующей статье.

На этом, у меня все, я завершаю свою тему»Прогресс bar для консольных утилит в Unix/Linux».

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

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

Источник

Create a progress bar in bash

How can I create an progress bar with bash?

This is my script:

I want to replace echo ‘loading 50%’ with anything to create an progress bar.

5 Answers 5

whiptail comes preinstalled on Ubuntu and many other distros, and will show full-screen (but still terminal-based) progress elements.

dialog is a superset of whiptail , so this example will work equally well with both. It does provide more advanced UI elements, so it may come in handy if you’re looking for user interaction such as file pickers and forms, but it has the disadvantage of not coming preinstalled on many systems.

Note that the script output is interpreted as a percentage, so you may have to adjust your output accordingly.

Whiptail and Dialog also allow you to modify the text at run time via a rather cryptic syntax:

pv shows the progress of a file or stream being piped through it. It cannot however be (easily?) used to show progress of a custom operation such as a loop. It’s designed specifically for streams.

Some real-world examples where pv comes in handy:

I don’t know of any commands that give one-line progress bars in the style of pv or wget , but there are plenty of simple Bash/Perl/sed scripts that will add that functionality, as others have shared here.

Источник

Как посмотреть прогресс dd Linux

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

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

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

Читайте также:  What is exim in linux

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

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

Установка progress

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

sudo apt install progress

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

sudo apt-get install libncurses-dev

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

sudo apt-get install ncurses-dev

В Fedora и CentOS:

sudo yum install ncurses-devel

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

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

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

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

sudo make install

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

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

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

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

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

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

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

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

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

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

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

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

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

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

watch progress -w

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

watch progress -wc firefox

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

progress -c httpd

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

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

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

dd if=/dev/zero | pv | dd of=/file

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

pv /ваш_файл | cat > новый_файл

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

Выводы

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

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

Источник

linux-notes.org

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

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

Читайте также:  Скриншоты windows 10 меню пуск

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

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

  • -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 запросов и соединяете его в один длинный конвейер.
Читайте также:  Linux mint для планшета intel atom

Модификаторы передачи данных

  • -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, поскольку сплайсинг в/из пайп(а) не использует буфер.
  • %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 для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Источник

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