Подзорная труба по имени PV

Есть такая утилитка под названием pv (Pipe Viewer).
С её помощью можно наглядно видеть, сколько времени будет выполняться та или иная команда.

Ее установка для CentOS из Epel проста как 3 копейки:

yum install pv

Простейшее её использование, вычисляем хеш-сумму:

  1. $ pv kino.avi | md5sum
  2. $ 158MB 0:00:03 [  45MB/s] [=========================================>] 100%
  3. 7451f8ac288b3815e7b1894e9ec14f24  -

Всё наглядно, не правда ли?

Сжимаем файл:

  1. $ tar -czf - kino.avi | pv > kino.tgz
  2. 37,7MB 0:00:15 [2,37MB/s] [          <=>                                               ]

Показывает, только сколько времени осталось не понять. Поправим это.
  1. $ tar -cf - kino.avi | pv -s $(du -sb kino.avi | awk '{print $1}') | gzip > kino.tgz
  2.  58MB 0:00:15 [10,5MB/s] [==========>                       ] 57% ETA 0:00:14

Сжимаем всю папку с файлами:
$ tar -cf - . | pv -s $(du -sb . | awk '{print $1}') | gzip > mydir.tgz

Распаковка:

$ pv mydir.tgz | tar xzf -

Ваша оценка: Ничего Средняя оценка: 8.3 (3 votes)

Ее установка проста как 3 копейки:

Установка да, а вот юзанье совсем непонятно, она в примерах фтыкается в самые разные место строки: то вначале строки, то в конце то посредине. Можна просветить эти моменты?

Смотря что хочешь измерить.
Например, распакуем файл TEST.IMG.GZ.
pv TEST.IMG.GZ | gunzip -c > TEST.IMG
Тем самым такая конструкция позволяет:
1) Измерить скорость считывания архива TEST.IMG.GZ т.к. pv считывает сжатый архив и передаёт в gunzip.
2) Измерить, сколько времени потребуется для полного считывания сжатого архива (размер файла TEST.IMG.GZ программа pv определяет автоматически т.к. этот файл ему подаётся напрямую).
И не позволяет:
1) Узнать размер распакованного файла.
2) Узнать скорость распаковки.

Сделаем тоже самое, но поменяем их местами
gunzip -c TEST.IMG.GZ | pv > TEST.IMG
Тем самым такая конструкция позволяет:
1) Измерить скорость распаковки архива TEST.IMG.GZ т.к. gunzip подаёт программе pv уже распакованные данные.
И не позволяет:
1) Узнать, сколько времени осталось т.к. pv не знает размер уже распакованного файла.
2) Узнать скорость считывания архива.

Но если размер расжатого файла известно (например 50000000 байт), то
gunzip -c TEST.IMG.GZ | pv -s 50000000 > TEST.IMG
Позволяет:
1) Измерить скорость распаковки архива TEST.IMG.GZ
2) Узнать, сколько времени осталось для записи распакованных данных на жесткий диск.
И не позволяет:
1) Узнать скорость считывания архива.

RSS-материал