GNU/Linux >> Linux の 問題 >  >> Linux

「pv」コマンドを使用してパイプを介したデータの進行状況を監視する方法

このシナリオを想像してください。コマンドラインを使用して、あるディレクトリから別のディレクトリに、またはあるシステムから別のシステムに大きなファイルをコピーしようとしています。ご存知かもしれませんが、「cp」コマンドを使用している場合、コピータスクの表示は表示されません。空の画面が表示されます。コピープロセスが完了するまで、コピープロセスが進行中であるかどうかを確認することはできません。このような場合は、 pvを使用できます データの進行状況を監視するコマンド。 pv、 pの頭字語 ipe v iewer、コマンドを使用すると、ユーザーは次の情報を提供することにより、パイプラインを介したデータの進行状況を確認できます。

  • 合計経過時間
  • 完了率(プログレスバー付き)、
  • 現在のスループット率
  • 転送されたデータの合計
  • およびETA。

この簡単なチュートリアルでは、pvコマンドを使用してUnixライクなシステムのデータの進行状況を監視する方法と場所を確認します。

ダウンロード -無料のチートシート:「Linuxコマンドラインチートシート」

Linuxにpvをインストールする

最新のLinuxディストリビューションのほとんどには、pvコマンドがプリインストールされています。まだインストールされていない場合に備えて、使用しているLinuxディストリビューションに応じて、ターミナルから次のコマンドを実行してインストールできます。

Arch Linux、Antergos、Manjaro Linuxの場合:

$ sudo pacman -S pv

RHEL、CentOS、Fedoraの場合:

$ sudo yum install pv

または、

$ sudo dnf install pv

Debian、Linux Mint、Ubuntuの場合:

$ sudo apt-get install pv

SUSEでは、openSUSE:

$ sudo zypper in pv

これで、pvをインストールしました。いくつか例を示しましょう。

「pv」コマンドを使用してパイプを介したデータの進行状況を監視する

次のコマンドの出力を見てください:

$ cp CentOS7.iso Downloads/

cpコマンド

このコマンドは、CentOS7ISOイメージをダウンロードにコピーします ローカルシステムのディレクトリ。上記の出力に見られるように、プログレスバーは表示されません。カーソルが点滅しているだけです。コピープロセスにかかる時間はわかりません。このコマンドがいつ完了するかについての兆候が見られないため、これは時々煩わしいかもしれません。ここで、pvコマンドが役立ちます。 pvコマンドは、Linuxコマンドの進行状況を表示し、Linuxコマンドがいつ完了するかを表示します。したがって、ターミナルを離れて他のタスクを実行し、タスクが完了したら戻ってくることができます。

それでは、パイプビューア(pv)でも同じことを行い、出力を確認しましょう。

$ pv CentOS7.iso > Downloads/centos.iso

'pv'コマンドを使用してパイプを介したデータの進行状況を監視する

ほら、違いがわかりますか?私が言ったように、pvコマンドは、経過時間の合計、完了率(進行状況バー付き)、現在のスループットレート、転送されたデータの合計、およびETAを表示します。

もう少し例を挙げましょう。

-Lを使用してデータ転送速度を制限できます 次の例に示すように切り替えます。

$ pv -L 2m CentOS7.iso > Downloads/centos.iso

上記のコマンドは、データ転送速度を1秒あたり2MBに制限します 。次の出力を見てください。

pvコマンドを使用してデータ転送速度を制限する

複数のファイルまたはディレクトリがある場合は、tarコマンドでpvを使用できます。 以下に示すように:

$ tar c Notebooks/ | pv | tar x -C Documents/

上記のコマンドは、ディレクトリNotebooksを圧縮し、それをDocumentsディレクトリにコピーして、最後にコンテンツを抽出します。

別の例を示します。このコマンドは、アーカイブを作成します CentOS7.isoファイルを作成し、現在の作業ディレクトリに保存します。

$ pv CentOS7.iso | zip > centos.zip

pvコマンドを使用してアーカイブファイルを作成する

ddコマンドでpvを使用することもできます 以下のようにディレクトリ間でファイルをコピーします。このコマンドは、CentOS7.isoファイルを現在のディレクトリからダウンロードディレクトリにコピーします。

$ dd if=CentOS7.iso | pv | dd of=Downloads/centos7.iso

pvコマンドとddコマンドを使用して、ディレクトリ間でファイルをコピーします

データの進行状況を表示するもう1つの便利なコマンドは、ダイアログです。 。これをpvコマンドと一緒に使用して、以下のようにデータの進行状況を表示できます。

$ tar -czf - Official/ | (pv -n > mybackup.tgz) 2>&1 | dialog --gauge "Compressing files, please wait..." 10 70 0

出力例:

ダイアログコマンドとpvコマンドを使用して、データの進行状況を表示します

詳細については、manページを参照してください。

$ man pv

また、以前のガイドを確認して、 netcatを使用してネットワーク経由で2つのリモートシステム間で大きなファイルをすばやく転送してください 、タール 、および pv LinuxおよびUnixオペレーティングシステムのコマンド。

  • LinuxおよびUnixでネットワーク経由で大きなファイルをすばやく転送する方法

更新:

「cp」および「mv」コマンドのプログレスバーは、「AdvancedCopy」という名前のパッチを使用して簡単に追加できます。 。詳しくは以下のリンクをご確認ください。

  • 高度なコピー–Linuxのcpおよびmvコマンドにプログレスバーを追加

Linux
  1. コマンドラインを使用してMySQLでデータベースを作成する方法

  2. コマンドラインを使用してLinuxでtar.gzファイルを抽出する方法

  3. コマンドラインを使用してLinuxでユーザーを削除する方法

  1. パイプが空であるかどうかを確認し、空でない場合はデータに対してコマンドを実行する方法は?

  2. Linuxでtarコマンドを使用してファイルを圧縮および抽出する方法は?

  3. ssh コマンドを使用してリモート ホストに接続する方法

  1. basenameコマンドの使用方法は?

  2. コマンドラインを使用してディレクトリ内のファイルの数を取得するにはどうすればよいですか?

  3. コマンドラインからクリップボードにテキストをパイプする方法