|
||
Ответить |
|
#1
|
|
Вес репутации:
0
Регистрация: 27.02.2009
Адрес: Москва
Сообщений: 7,302
Сказал(а) спасибо: 578
Спасибок 2,623
в 1,832 сообщениях |
Progress bar для консольных утилит -
18.07.2010, 21:58
Всем время от времени приходится копировать, архивировать, разархивировать и проводить другие стандартные действия с большими файлами. Консольные утилиты, типа cp, tar или cat — отлично справляются с поставленной перед ними задачей, но возникает одна маленькая проблема: предположим, что надо заархивировать SQL-дамп на 500 Мб, на среднем железе данная операция может выполняться 5 — 10 минут и при этом, стандартный tar не выводит никакой строки прогресса, т.е. консоль как бы подвисает и только открыв top в соседнем окне можно понять что что-то происходит. Будет намного удобнее, если в консоли появится полоска прогресса, как в том же scp и тогда пользователь будет лучше осведомлен о том, как долго ему осталось ждать до завершения операции.
Был написан интересный bash скрипт bar. Как он работает можно увидеть на картинке: Скрипт выполнен в лучших традициях unix-way: он отлично делает единственную поставленную перед ним задачу — рисует полосу прогресса, а так же может использоваться в цепочках команд. Скрипт работает в большинстве популярных систем, таких как Linux, Solaris, NetBSD, FreeBSD, OpenBSD и т.п. Скачать скрипт и узнать подробности его работы можно на странице проекта: Theiling Online: ASCII bar Источник Добавлено через 4 минуты И ещё один вариант, выше рассмотренной проблемы 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 Может показаться, что pv это такая замена для cat, но на самом деле ее возможности намного шире. Например, упаковываем весь каталог в сжатый архив %tar -czf - . | pv > out.tgz 21.9MB 0:00:15 [1.47MB/s] [...<=>.....................] %tar -czf - . | pv -s $(du -sb | grep -o '[0-9]*') > out.tgz 44.3MB 0:00:27 [1.73MB/s] [>..........................] 0% ETA 13:36:22 Можно так же составлять команды из несколько копий pv. %tar -cf - . | pv -cN tar -s $(du -sb | grep -o '[0-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] [....<=>................] Ну и под конец забавный пример с одного англоязычного блога о Линуксе %pv /dev/urandom > /dev/null 18MB 0:00:05 [ 3,6MB/s] [...<=>............................] <!-- Вопросы задаем на форуме, не в ЛС --> |
Ответить |
Опции темы | |
Опции просмотра | |
|
|