\r\n\r\n

linuxコマンドの進行状況を監視する方法(pvとprogressを使用)。

linuxpv と progress コマンドを使用すると、コマンドの進行状況を確認することができます。これらのユーティリティは、通常はプログレスバーがないようなコマンドのプログレスバーを表示します。完成までの時間の目安も表示される ...

linuxpv と progress コマンドを使用すると、コマンドの進行状況を確認することができます。これらのユーティリティは、通常はプログレスバーがないようなコマンドのプログレスバーを表示します。完成までの時間の目安も表示されます。

ビデオスクリーンのない航空機で長距離を飛行する場合、自分がどれだけ移動したかを知るのは簡単ではありません。離陸のタイミングがわかるフライトの所要時間はわかっているはずだ。しかし、予定通りなのか、時間通りなのか、それとも予定よりかなり遅れているのか、どうすれば分かるのでしょうか?機内映画を見たくない場合は、通常、ビデオ画面を切り替えて、航空機の位置を示す地図を表示させることができます。また、到着予定時刻(ETA)など、統計的な情報も得られるので、とても便利です。

ターミナルウィンドウからコマンドを起動するのは、時にビデオスクリーンのない長いフライトのように感じられることがあります。すべてが順調に進んでいるのか、処理が保留になっているのか、完了まであとどれくらいなのか、まったくわからないのです。カーソルが点滅しているのは、あまり情報量が多くない。

pvとprogressコマンドは、いくつかの統計情報と視覚的なフィードバックを提供します。完成まであと一歩のところまで来ていることがわかります。つまり、実行中の処理の到着予定時刻が表示されるのです。カーソルとにらめっこするのに比べれば、楽なものです。

pvの設置

Pvをインストールする必要があります。

Ubuntuにpvをインストールするには、次のコマンドを使用します。

sudo apt-get install pv

Fedoraにpvをインストールするには、次のコマンドを使用します。

sudo dnf install pv

Manjaroにpvをインストールするには、次のコマンドを使用します。

sudo pacman -Syu pv

pvを使用

pvはpipeline viewerの略です。パイプラインは、どこかでコマンドに関与しているはずです。ここでは、ISOイメージをZIPパイプで転送し、ISOの圧縮ZIPファイルを生成する例を紹介します。

スクリーンショットが撮れる速度までコマンドを遅くするために、この記事で使用している例のファイルの一部は、SILVERXHDという古くて遅い外付けUSBに保存されています。

pv /media/dave/SILVERXHD/gparted-live-1.0.0-1-amd64.iso | zip > gparted.zip

pvから提供される情報は、ディスプレイの下部に表示されます。

左から、表示されている情報です。

  • これまでに転送したデータ
  • 時間が経ちすぎました。
  • データ転送速度(スループット)。
  • プログレスバーと達成率の表示。
  • 完成までの残り時間(ETA)

pvでファイルをコピーする

pv出力でファイルをコピーする場合は、以下のコマンドを使用します。

pv /media/dave/SILVERXHD/gparted-live-1.0.0-1-amd64.iso > gparted.iso

ファイルがコピーされると、進捗状況が表示されるんだ。

pvを使った複数ファイルのコピー

pvで複数のファイルやフォルダをコピーするには、いくつかのトリックを使う必要があります。

tar -c help-files/ | pv | tar -x -C Documents/

コマンドの tar-c help files/ の部分は、tar に help files フォルダにファイルアーカイブを作成(-c)するように指示します。これをpvパイプラインで転送することで、進捗状況を表示させることができるのです。これをtarにパイプバックして、コマンドの最後の部分を実行します。アーカイブファイルを解凍(-x)し、ディレクトリをドキュメントに変更(-C)してから解凍します。

その結果、ヘルプファイル内のファイルやフォルダーが「ドキュメント」フォルダーにコピーされ、進捗状況が表示されます。

今回は出力が少し変わっています。

到着予定時刻はありません。プログレスバーに移動のインジケーターが表示されるようになりました。pvは、パイプ処理されているプロセスから抽出できる情報を表示することに限定される。

pvとtarでアーカイブを作成する

pvとtarでファイルをコピーしても、アーカイブファイルにはなりません。tarは「仮想」アーカイブを作成し、ファイルを抽出するために直接tarに送り込みます。ファイルをコピーすることが目的なら、それで終わりです。しかし、アーカイブを作りたい場合はどうすればいいのでしょうか。

tar で使用するオプションは -c (アーカイブの作成)、-z (gzip による圧縮)、-f (アーカイブのファイル名) です。

ファイル名に - を使っているのは、tar が stdout を使って出力を端末ウィンドウに書き込むようにするためです。この出力は、pvパイプを通して転送されるため、私たちには見えません。

アーカイブファイルの実際の名前は、pvの出力をインポートするファイルの名前になります。 この場合、"help"-file.tgz "になります。

tar -czf - ./help-files/ | pv > help-files.tgz

以前と同じように進行状況を示すインジケータが表示され、アーカイブファイルが作成されます。

関連:Linuxでtarコマンドを使ってファイルを圧縮・解凍する方法

pv表示オプション

pvには、レポートの詳細を変更するためのオプションがいくつか用意されています。

これらのオプションのいずれかが使用された場合、他のオプションはすべてオフになります。したがって、3つの表示オプションを使用したい場合は、3つとも指定する必要があります。

オプションなしでpvを使用すると、-pterbオプションを使用した場合と同じになります。

  • -プログレスバーと完成度のパーセンテージです。
  • -t:経過時間を表示します。
  • -e:到着予定時刻を表示します。
  • -r:データ転送速度を表示します。
  • -b:バイト数(これまでに転送されたデータ)を表示します。
  • -n: パーセンテージを整数で表示します。これは、更新されるたびに、完了したパーセンテージを新しい行に表示します。

先ほどのコマンドを繰り返し、pvに-p(percentage complete)オプションを渡してみましょう。

tar -czf - ./help-files/ | pv - p > help-files.tgz

これにより、他の表示オプションはすべてオフになります。pvは、完成した要素のパーセンテージのみを表示します。

pvがtarから完了率を取得できないため、プログレスバーが移動インジケータに置き換わっています。パーセントの数値はありません。

pvとwcの使い分け

pv を使ってテキストファイル(または複数のファイル)を wc にインポートすることができます。wc はキャリッジリターン、文字、単語をカウントし、pv は進捗状況を報告します。

ここでは、help files ディレクトリにあるすべての ".page" ファイルを wc にインポートしています。

007Ys3FFgy1gp6tw44t7uj30hy03ejre

wcが終了すると、ヘルプファイルフォルダ内のすべての「.page」ファイルのキャリッジリターン(行数)、文字数、単語数を確認することができます。

インストール進行状況コマンド

progress コマンドは pv と同じ有用な情報を提供しますが、特定の Linux コマンドのセットで使用することができます。

Ubuntuでprogressをインストールするには、以下のコマンドを使用します。

sudo apt-get install progress

Fedoraでprogressをインストールするには、次のコマンドを使用します。

sudo dnf install progress

Manjaroでprogressをインストールするには、以下のコマンドを使用します。

sudo pacman -Syu progress

でのご注文の進捗状況

ターミナルウィンドウにprogressと入力し、Enterキーを押すと、progressが使用するコマンドの一覧が表示されます。

progress

パイプラインの活用の進捗

コマンドの進行状況を監視するために、2つのテクニックがあります。1つは、パイプラインを使用することです。

tarコマンドは、progressが監視できるサポートコマンドのリストにあるので、tarを使ってみましょう。

使用するオプションは、標準の -c(アーカイブを作成)、-z(gzipで圧縮)、-f(ファイル名)オプションです。help files」フォルダー内のすべてを圧縮したアーカイブを作成し、「help.tgz」という名前をつけます。

それをプロセスにインポートし、-m(モニター)オプションを使って、プロセスが完了するまでレポートを出し続けています。

tar -czf help.tgz ./help-files/ | progress -m

ターミナルウィンドウには、アーカイブを作成するtarコマンドの進行状況が表示されます。

各文書が処理されると、リスト化され、以下の情報が記載されます。

  • プロセスIDです。
  • プロセスの名前。
  • 完成度の高さの割合
  • 処理されたデータおよびファイルの合計サイズです。
  • データレート(スループット)。
  • 残り時間(ETA)の目安です。

2つ目のデータセットが表示され、驚かれるかもしれません。1つ目のデータセットはtarに使用される。2つ目はgzipである。tarはgzipを呼び出して圧縮を行う。gzip はサポートされているコマンドのリストに含まれているため、その進行状況が報告されます。

連続監視モードでのプログレスの使用

M(モニター)オプションを使用することで、プログレスをリアルタイムで連続監視するモードで使用することができます。

ターミナルウィンドウで、次のコマンドを入力します。

progress -M

は、監視するためのコマンドが実行されていないことを報告します。ただし、コマンドラインには戻りません。プロセスは、監視できるコマンドの開始を待ちます。その後、自動的にレポートが開始されます。

別の端末ウィンドウで、進捗状況を監視できるコマンドの一覧からコマンドを入力します。

ここでは、cat.コマンドを使用します。あまり早く終了するコマンドは、進捗状況を登録できないので、非常に長いテキストファイルの内容を一覧表示します。

cat words.page

進捗状況を含むターミナルウィンドウに、catコマンドの実行状況と完了間際の統計が表示されます。

cat がファイルのリストアップを終了すると、ファイルの進行状況は待ちの状態に戻る。

報告可能なコマンドのうち、かなり大きなタスクが実行されるたびに、progressは自動的にそれを監視し、報告する。

素晴らしかったです。

100%完全

長く続くコマンドの動作を推測しようとしたり、カーソルをpvや進捗で考えたりしないことです。

あなたが興味を持っているかもしれない記事

匿名者
匿名者

0 件の投稿

作家リスト

  1. admin 0 投稿
  2. 匿名者 0 投稿

おすすめ