Linux для всех

индекс
246,80

progress bar для консольных утилит

По долгу службы мне время от времени приходится копировать, архивировать, разархивировать и проводить другие стандартные действия с большими файлами. Консольные утилиты, типа cp, tar или cat — отлично справляются с поставленной перед ними задачей, но возникает одна маленькая проблема: предположим, что надо заархивировать SQL-дамп на 500 Мб, на среднем железе данная операция может выполняться 5 — 10 минут и при этом, стандартный tar не выводит никакой строки прогресса, т.е. консоль как бы подвисает и только открыв top в соседнем окне можно понять что что-то происходит. Я думаю, что будет намного удобнее, если в консоли появится полоска прогресса как в том же scp и тогда пользователь будет лучше осведомлен о том, как долго ему осталось ждать до завершения операции.

Спросив у Гугла я понял, что являюсь далеко не первым, кого обеспокоила эта проблема и хорошими людьми был написан интересный bash скрипт bar. Как он работает можно увидеть на картинке:



Скрипт выполнен в лучших традициях unix-way: он отлично делает единственную поставленную перед ним задачу — рисует полосу прогресса, а так же может использоваться в цепочках команд.

Скрипт работает в большинстве популярных систем, таких как Linux, Solaris, NetBSD, FreeBSD, OpenBSD и т.п. Скачать скрипт и узнать подробности его работы можно на странице проекта: http://www.theiling.de/projects/bar.html
+69
15 июля 2010, 12:24
110

комментарии (16)

+38
Labinskiy #
man pv
+22
barev #
Даже на хабре разбиралась: pv — маленькая, но очень полезная утилита.
–1
Goganchic #
тоже вариант
НЛО прилетело и опубликовало эту надпись здесь
+2
AAM #
Спасибо за наводку на полезную и главное нужную вещь!
Про pv тоже не знал. Спасибо, люди :)
0
bobrik #
про 5-10 минут на среднем железе вы хорошенько загнули.
0
Goganchic #
значит либо у меня железо совсем плохое, либо что-то не так с файловой системой или что-то не так с дампом :( Но цифры реальные взял, не из головы.
+2
baltazar_bz #
А чём Вы сделали GIF?
0
Goganchic #
если честно, то gif-ку я взял со странички проекта bar: www.theiling.de/projects/bar.html
+1
Aux #
Копи-пейстом с сайта автора bar-а.
+2
baltazar_bz #
Отвечу сам на свой же вопрос. Есть много утилит, достаточно погуглить. Но именно для записи в GIF первой выдаётся byzanz
0
Biga #
Чаще бывает, что хочется посмотреть прогресс у уже запущенного процесса копирования. Естественно, ни о каком pv или bar никто заранее не подумал.
Вот давно интересно, а нельзя ли подглядеть состояние файлового дескриптора внутре процесса? Где-нибудь в /proc или даже пускай специальный ядерный модуль, даже под рутом, лишь бы было. Вот это было бы круто.
0
stolen #
alias?
0
ryo_oh_ki #
Интересно. В винде есть возможность установить свой шелл экстеншн ICopyHook для пользовательских копирований (используется, например, в известной утилите KillCopy). А в линухе есть подобные интерфейсы, вроде бы там что-то делали на CORBA?
0
Glow #
А можно ли прикрутить этот скрипт к Portage?
0
GadPetrovich #
emerge sys-apps/bar

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