Linuxコマンド - pv

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
ナビゲーションに移動 検索に移動

概要

pv(Pipe Viewer)は、ターミナル向けソフトウェアであり、パイプを通して送られるデータを監視するために使用する。

以下に示すようなことを、視覚的に表示することができる。

  • 経過時間
  • 完了した進行状況 (パーセント)
  • 現在のデータ転送速度 (スループットレートとも呼ばれる)
  • 転送されたデータ
  • ETA(予想時間)(残り時間)



pvのインストール

パッケージ管理システムからインストール

# RHEL
sudo dnf install pv

# SUSE
sudo zypper install pv


ソースコードからインストール

pvの公式Webサイト、または、pvのCodebergにアクセスして、ソースコードをダウンロードする。
なお、pvのGithubは閉鎖予定である。
ダウンロードしたファイルを解凍する。

tar xf pv-<バージョン>.tar.gz
cd pv-<バージョン>


pvをビルドおよびインストールする。

./generate.sh

mkdir build && cd build

../configure --prefix=<pvのインストールディレクトリ>
make -j $(nproc)
make install



pvのオプション

  • 表示関連
    • -progress または -p
      プログレスバーを表示する。
    • -timer または -t
      経過時間を表示する。
    • -eta または -e
      操作にかかる推定時間を表示する。
      推定時間は、前回のデータ転送レートと転送するデータのサイズに基づいて決定する。
    • -rate または -r
      操作のレートカウンターを有効にする。
    • -bytes または -b
      現在までに転送されたデータ量の合計を表示する。
    • -numeric または -n
      視覚的な表示ではなく、整数によるパーセンテージを表示する。
    • -quiet または -q
      何も出力しない。

  • 出力関連
    • -wait または -W
      1バイト目の転送を待って進行状況を表示する。
    • -interval <秒数> または -i <秒数>
      更新の時間間隔を指定する。
    • -force または -F
      操作を強制する。
      つまり、標準エラーが端末に出力されない場合でも、pvにより強制的に表示させる。
    • -size <バイト数> / -s <バイト数>
      転送されるデータの合計を<バイト数>バイトと仮定して、パーセンテージやETAを計算する。
    • -line-mode または -L
      サイズを数える代わりに、新しい行が見つけた時はプログレスバーを移動させる。
    • -name <名前> または -n <名前>
      出力情報の前に名前を付ける。
    • -cursor または -c
      カーソルの位置決めにキャリッジリターンの代わりにエスケープシーケンスを使用する。

  • データ転送関連
    • -rate-limit <レート数> または -L <レート数>
      1秒間に<レート数>バイトまでしか転送できないように制限する。
    • -buffer-size <バイト数> または -B <バイト数>
      転送バッファのサイズを<バイト数>バイトにする。
    • -remote <PID> または -R <PID>
      <PID>がpvのインスタンスである場合、インスタンスのコマンドラインを指定することにより、そのインスタンスを動作させる。


pvコマンドのオプションを付加しない場合、-p-t-e-r-bのオプションがデフォルトで選択される。


pvの使用方法

pvは、上記セクションにあるような機能を持たないソフトウェアの進捗を監視する機能を提供するために使用される。
2つのプロセスの間にパイプ演算子(|)を置くことで使用することができる。

# pvコマンドのシンタックス

pv <ファイル名>
pv <オプション> <ファイル名>
pv <ファイル名> > <出力先のファイル名>
pv <オプション> | <コマンド> > <出力先のファイル名> 
<コマンド1> | pv | <コマンド2>


pvコマンドの標準入力が標準出力に渡されて、その結果が標準エラーに出力される。

cpコマンドでプログレスバーを表示する。

pv history.log > ~/history.log


行数、ワード数、バイト数を数える。

pv -p history.log | wc


tarコマンドの進捗を表示する。

# 圧縮
tar czf - <ファイル名またはディレクトリ名> | pv -p --timer --rate --bytes > <ファイル名>.tar.gz

# 解凍
pv -p --timer --rate --bytes <ファイル名>.tar.gz | tar zxf -
pv -p --timer --rate --bytes <ファイル名>.tar.gz | tar zxf -   <解凍先のファイル名>
pv -p --timer --rate --bytes <ファイル名>.tar.gz | tar zxf - > <解凍先のファイル名>


zipコマンドでプログレスバーを表示する。

pv history.log | zip > ~/history.zip