Linuxメモ : パイプ処理の進捗を表示するpv(Pipe Viewer)の使い方
pv(Pipe Viewer)
上記記事でpv
(Pipe Viewer)というパイプ処理の進捗を確認できるコマンドを知ったので使い方を調べてみる。
インストール
CentOSの場合(今回はCentOSで試してみる)。
$ sudo yum install pv
Ubuntuの場合。
$ sudo apt-get install pv
Macの場合。
$ brew install pv
ヘルプメッセージ。
$ pv --help Usage: pv [OPTION] [FILE]... Concatenate FILE(s), or standard input, to standard output, with monitoring. -p, --progress show progress bar -t, --timer show elapsed time -e, --eta show estimated time of arrival (completion) -r, --rate show data transfer rate counter -a, --average-rate show data transfer average rate counter -b, --bytes show number of bytes transferred -F, --format FORMAT set output format to FORMAT -n, --numeric output percentages, not visual information -q, --quiet do not output any transfer information at all -W, --wait display nothing until first byte transferred -s, --size SIZE set estimated data size to SIZE bytes -l, --line-mode count lines instead of bytes -i, --interval SEC update every SEC seconds -w, --width WIDTH assume terminal is WIDTH characters wide -H, --height HEIGHT assume terminal is HEIGHT rows high -N, --name NAME prefix visual information with NAME -f, --force output even if standard error is not a terminal -c, --cursor use cursor positioning escape sequences -L, --rate-limit RATE limit transfer to RATE bytes per second -B, --buffer-size BYTES use a buffer size of BYTES -E, --skip-errors skip read errors in input -S, --stop-at-size stop after --size bytes have been transferred -R, --remote PID update settings of process PID -P, --pidfile FILE save process ID in FILE -h, --help show this help and exit -V, --version show version information and exit Please report any bugs to Andrew Wood <andrew.wood@ivarch.com>.
使い方
基本
検証用に1GB用のダミーファイルを作成する。
$ fallocate -l 1g access.log
普通に圧縮すると進捗は表示されない。
$ gzip -c access.log > access.log.gz
ここでpv
を使うと図のように進捗が表示される。
$ pv access.log | gzip > access.log.gz
デフォルトでは転送済データ量、経過時間、転送レート、プログレスバー、残り時間が表示されるが、何を表示するかは下記オプションで指定できる。
-p, --progress show progress bar -t, --timer show elapsed time -e, --eta show estimated time of arrival (completion) -r, --rate show data transfer rate counter -a, --average-rate show data transfer average rate counter -b, --bytes show number of bytes transferred
pv
はcat
のように動作するので、以下のようにすると進捗を表示しながらコピーできる。
$ pv access.log > access.log.bak
応用
pv
を複数組み合わせることもできる。以下のようにするとファイルからの読み込み、圧縮ファイルへの書き込みのデータ転送量などをそれぞれ表示できる。
-N
は左端に表示する名前を指定するオプションで、-c
はそれぞれの進捗を表示するために必要なオプションらしい。
$ pv -cN source access.log | gzip | pv -cN gzip > access.log.gz
-L
オプションでデータ転送量を制限することもできるようだ(下記例だと1秒に10MB)。
$ pv -L 10M access.log > access.log.bak
その他、カレントディレクトリ以下を進捗を表示しながら圧縮するコマンド(-s
オプションで転送するデータ量を示している)や、
$ tar -cf - . | pv -s $(du -sb . | awk '{print $1}') | gzip > out.tgz
/dev/zero
からの読み込みスピードを計測する下記コマンドなどが例として挙げられていた。
$ pv /dev/zero > /dev/null