ホーム > 環境・ユーティリティ > pv

pv: パイプデータの進捗状況を監視

pv (Pipe Viewer) は、パイプを介して転送されるデータの進捗状況を監視するツールです。データスループット、転送された総データ量、推定完了時間などをリアルタイムで表示し、長時間実行されるタスクの進捗状況を視覚的に確認するのに役立ちます。

概要

pvは標準入力からデータを読み込み、標準出力に転送しながら、その過程でデータの流れを測定し、進捗状況をターミナルに表示します。これは特に大容量ファイルのコピー、圧縮、ネットワーク転送など、時間がかかる作業で役立ちます。

主な機能

  • リアルタイムデータスループット表示
  • 転送された総データ量表示
  • 進捗バーと推定完了時間 (ETA) 提供
  • データ転送速度制限機能

主なオプション

pvコマンドの主なオプションは、データ表示方法、速度制限、サイズ指定などに使用されます。

表示と制御

生成されたコマンド:

コマンドを組み合わせてみてください。

説明:

`pv` コマンドを実行します。

これらのオプションを組み合わせて、AIと一緒に仮想的にコマンドを実行してみてください。

使用例

pvコマンドを活用した様々なデータ転送および監視の例です。

基本的な進捗状況の監視

dd if=/dev/urandom bs=1M count=100 | pv > /dev/null

ddコマンドで生成されたデータを /dev/null に送りながら、pvで進捗状況を確認します。

ファイルコピーの進捗状況の監視

pv large_file.iso > copied_file.iso

大きなファイルをコピーする際にpvを使用して進捗状況を表示します。(実際のファイルパスに置き換えてください)

データ転送速度の制限

dd if=/dev/zero bs=1M count=500 | pv -L 1m > /dev/null

データ転送速度を毎秒1MBに制限しながら進捗状況を監視します。

圧縮作業の進捗状況の監視

tar -czf - my_directory | pv -s $(du -sb my_directory | awk '{print $1}') > archive.tar.gz

tarとgzipを使用してディレクトリを圧縮する際に、pvで進捗状況を確認します。(実際のディレクトリパスに置き換えてください)

総サイズを指定して正確なETAを確認

dd if=/dev/urandom bs=1M count=500 | pv -s 500M > /dev/null

総データサイズが500MBであることをpvに伝えることで、より正確な進捗率と推定完了時間を得ます。

インストール

pvはほとんどのLinuxディストリビューションにデフォルトで含まれていないため、パッケージマネージャーを通じてインストールする必要があります。

インストールコマンド

各オペレーティングシステム別のインストールコマンドです。

  • Debian/Ubuntu: sudo apt update && sudo apt install pv
  • CentOS/RHEL/Fedora: sudo yum install pv または sudo dnf install pv
  • Arch Linux: sudo pacman -S pv
  • macOS (Homebrew): brew install pv

ヒントと注意点

pvをより効果的に使用するためのヒントと注意点です。

活用ヒント

  • **パイプラインの中間に挿入**: `command1 | pv | command2` の形式でパイプラインの中間にpvを挿入し、特定の段階の進捗状況を監視できます。
  • **正確なETAのために -s を使用**: `pv -s $(du -sb large_dir | awk '{print $1}')` のように `du` コマンドと組み合わせて総サイズを動的に指定すると、より正確なETAが得られます。
  • **速度制限で帯域幅を管理**: ネットワーク転送時に `-L` オプションを使用して帯域幅を調整すると、他のサービスへの影響を軽減できます。
  • **ファイルを直接監視**: `pv file.ext` のようにファイル名を引数に与えると、そのファイルの読み込み進捗状況を監視できます。

注意点

  • **バッファリングの問題**: 一部のコマンドは独自のバッファリングを行うため、pvの進捗率が予想と異なって表示されることがあります。この場合、該当コマンドのバッファリングオプションを確認する必要があります。
  • **ターミナル出力の干渉**: pvはターミナルに進捗状況を継続的に出力するため、スクリプトでpvを使用する際は `-q` (quiet) オプションなどを使用して出力を抑制する必要がある場合があります。

同じカテゴリのコマンド