Один из моих друзей сказал о pv следующее: «Я работаю админом семь лет, этот инструмент мне понадобился десятки раз, и я даже не знал, что он существует».
Размышляя о том, как получить инвайт в Харб, я набрал в поиске pv. И я ничего не нашел.
Итак, pv — это сокращение от Pipeviewer, то есть не что иное, как просмотрщик каналов.
Об эффективности использования труб рассказывать не буду; это ни для кого не секрет. Единственное «но» в работе с ними — когда вы набираете команду и нажимаете Enter, вам часто не хватает самого малого — знать, сколько времени потребуется на ее выполнение.
Именно скорость обработки данных нам покажет pv. С текстами закончили, перейдем к примерам.
Установка pv в Debian довольно тривиальна.
% sudo aptitude install pv
Далее вводные, допустим, вы, как и я, являетесь счастливым обладателем каких-то полезных логов и в какой-то момент дошли руки их заархивировать, например вот так % cat rt94-171-06 | gzip > rt94-171-06.gz
Есть идеи, сколько времени займет эта операция?
То же самое и с пв %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 секунд.
Может показаться, что пв — это замена кота, но на самом деле его возможности гораздо шире.
Например, упаковываем весь каталог в сжатый архив.
%tar -czf - .
| pv > out.tgz 21.9MB 0:00:15 [1.47MB/s] [.
<=>.
]
Это уже хорошо, но хотелось бы большего, чтобы показывалось время окончания работы.
Для этого вам просто нужно использовать ключ -s, чтобы передать pv размер каталога в байтах.
%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
Вся операция займет у меня 13 с половиной часов.
Хех, я накопил =)
Вы также можете составлять команды из нескольких копий 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] [.
<=>.
]
Переключатель -c необходим для предотвращения отображения информации несколькими копиями pv друг над другом.
Переключатель -N дает шкале имя.
И напоследок забавный пример из одного англоязычного блога о Linux %pv /dev/urandom > /dev/null
18MB 0:00:05 [ 3,6MB/s] [.
<=>.
]
Теги: #linux #настройка Linux #CLI #инструменты
-
Чек, Томас
19 Oct, 24 -
Самое Главное О Wi-Fi 6. Нет, Серьёзно
19 Oct, 24 -
Простая Эволюция Старого Msa2000
19 Oct, 24 -
Futureshorts: Лучшее
19 Oct, 24 -
Тестирование Веб-Сервиса В Go
19 Oct, 24