こんにちは、ごみばこです。
pv コマンド絶妙に便利なのですが、使う機会も少ないので、忘録的に書いときます。
pv ??
pv = pipe viewer の略で、その名の通り、パイプ処理のときのデータ量を可視化してくれて、絶妙に役立ちます。
pv をインストール
debian 系なら apt-get で、特に何することなくインストールするとこができます。Redhat もとい CentOS では RPMForge を導入することで yum install pv でインストールできます。
RPMForge は終了したそうです。理由としては、メンテナンスされていない古いソフトウェアが増えてきたから、とのこと。。というわけで Redhat/CentOS な方々は pv の公式サイトから rpm が公開されているので、これを利用すると良さそうです。
http://www.ivarch.com/programs/rpms/pv-1.6.6-1.x86_64.rpm
※バージョンは要確認すること。
$ sudo rpm -ivh http://www.ivarch.com/programs/rpms/pv-1.6.6-1.x86_64.rpm
$ pv --version
pv を使う
たとえば圧縮された SQL をドバーッと mysql に流したい…。
$ bzcat dump.sql.bz2 | mysql -uroot -pxxxx
が、これでは、ちゃんと進んでいるのかわからにくい! ここで pv を使うと…
$ bzcat dump.sql.bz2 | pv | mysql -uroot -pxxxx
1.81GiB 0:02:31 [ 12.4MiB/s] [ <=> ]
こんな出力がされ、流れるデータ量が可視化されます!
更に pv は複数に渡って記述ができるので… (公式サイトに記載されているものとほぼ同じですが。。)
$ pv -cN source < dump.sql.bz2 | bzcat | pv -cN bzcat | mysql -uroot -pxxxx
bzcat: 109MiB 0:00:18 [7.60MiB/s] [ <=> ]
source: 52.7MiB 0:00:19 [3.89MiB/s] [=====> ] 27% ETA 0:00:50
終わりそうな目処感と流れるデータ量を可視化できます!
まとめ
pv を使うことでパイプに流れるデータ量を観測することができます。これによっていつ終わるのか不安に思える作業もある程度は見える化されて便利~!