コマンド に関する投稿を表示しています

pv コマンド便利だよって

この記事は公開されてから1年以上経過しており、情報が古い可能性があります。

こんにちは、ごみばこです。

pv コマンド絶妙に便利なのですが、使う機会も少ないので、忘録的に書いときます。

pv ??

ivarch.com: Pipe Viewer

pv = pipe viewer の略で、その名の通り、パイプ処理のときのデータ量を可視化してくれて、絶妙に役立ちます。

pv をインストール

debian 系なら apt-get で、特に何することなくインストールするとこができます。Redhat もとい CentOS では RPMForge を導入することで yum install pv でインストールできます。

RepoForge Project

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 を使うことでパイプに流れるデータ量を観測することができます。これによっていつ終わるのか不安に思える作業もある程度は見える化されて便利~!