Linuxコマンドの進行状況を監視する方法(pvとprogressを使用)
公開: 2022-01-29 ブラインドで飛ぶ代わりに、Linuxのpv
コマンドとprogress
コマンドを使用して、コマンドの進行状況を追跡します。 これらのユーティリティは、通常は何も持たないコマンドのプログレスバーを提供します。 完了するまでの推定時間も表示されます。
シートバックにビデオスクリーンがない航空機で長距離飛行をしている場合、あなたがどれだけ旅をしているのかを知るのは簡単ではありません。 あなたはいつ離陸したか知っています。 あなたは飛行にどれくらいの時間がかかると予想されるか知っています。 しかし、あなたが予定通りに進んでいるのか、時間通りに進んでいるのか、それとも予定よりかなり遅れているのかをどうやって知るのでしょうか? 飛行中の映画を見たくない場合は、通常、ビデオ画面を切り替えて、航空機の位置が記載された地図を表示できます。 また、到着予定時刻(ETA)などの統計情報も取得できます。これはすばらしいことです。
ターミナルウィンドウからコマンドを開始すると、ビデオ画面のない長距離飛行のように感じることがあります。 すべてが順調であるか、プロセスがハングしているのか、またはプロセスがどれだけ完了に近づいているのかを示すものは何もありません。 点滅するカーソルはあまり有益ではありません。
pv
コマンドとprogress
コマンドは、いくつかの統計と少しの視覚的なフィードバックを提供します。 プロセスがどれだけ完了しているかがわかります。 つまり、実行中のプロセスのETAを取得します。 カーソルを見つめるのと比べて、それは手を下に勝ちます。
太陽光発電のインストール
pv
をインストールする必要があります。
Ubuntuにpv
をインストールするには、次のコマンドを使用します。
sudo apt-get install pv
Fedoraにpv
をインストールするには、次のコマンドを使用します。
sudo dnf install pv
Manjaroにpv
をインストールするには、次のコマンドを使用します。
sudo pacman -Syu pv
pvの使用
pv
はパイプビューアの略です。 配管はどこかでコマンドに関与する必要があります。 これは、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
を使用してファイルを移動します。
tar -c help-files / | pv | tar -x-Cドキュメント/
コマンドのtar -c help-files/
部分は、help-filesフォルダー内のファイルのアーカイブを作成( -c
)するようにtar
に指示します。 これはpv
を介してパイプ処理されるため、進行状況が表示されます。 次に、コマンドの最後の部分でtar
にパイプで戻されます。 アーカイブは抽出され( -x
)、ディレクトリは抽出前にドキュメントに変更されます( -C
)。
そのため、ヘルプファイル内のファイルとフォルダーがドキュメントフォルダーにコピーされ、進行状況が表示されます。
今回は出力が少し異なります。
ETAは取得しません。 プログレスバーに移動インジケーターが表示されます。 プロセスがアクティブであることを示していますが、従来のプログレスバーのように左から右に成長することはありません。 pv
は、パイプされているプロセスから抽出できる情報の表示に制限されています。
pvとtarを使用してアーカイブを作成する
pv
とtar
を使用してファイルをコピーしても、アーカイブファイルは残りません。 一種の「仮想」アーカイブがtar
によって作成され、 tar
に直接フィードバックされてファイルが抽出されます。 私たちの目的がファイルをコピーすることである場合、それは達成されます。 しかし、アーカイブファイルを作成したい場合はどうでしょうか。
tar
を使用してアーカイブファイルを作成し、 pv
から進捗レポートを取得することはできます。 tar
で使用されるオプションは、 -c
(アーカイブの作成)、- -z
(gzipで圧縮)、および-f
(アーカイブのファイル名)です。
ファイル名として-
を使用していることに注意してください。これにより、 tar
はstdoutを使用し、その出力をターミナルウィンドウに書き込みます。 pv
を介してパイプされるため、その出力は表示されません。
アーカイブの実際の名前は、 pv
から出力をパイプするファイル名になります。 この場合は「help-files.tgz」です。
tar -czf-./help-files/ | pv> help-files.tgz
以前と同じ進行状況インジケーターが表示され、アーカイブファイルが作成されます。
関連: Linuxでtarコマンドを使用してファイルを圧縮および抽出する方法
PV表示オプション
レポートの詳細を変更するためにpv
で使用できるオプションがいくつかあります。
これらのオプションのいずれかを使用すると、他のすべてのオプションがオフになります。 したがって、3つの表示オプションを使用する場合は、これら3つのオプションを指定する必要があります。
オプションなしでpv
を使用することは、 -pterb
オプションを使用することと同じです。
- -p :完了率を表示します。 これはプログレスバーと完了率の数値です。
- -t :経過時間を表示します。
- -e : ETAを表示します。
- -r :データ転送速度を表示します。
- -b :バイト数を表示します(これまでに転送されたデータ)。
- -n :パーセンテージを整数で表示します。 これにより、完了したパーセンテージが整数で出力され、新しい更新が行われるたびに新しい行が表示されます。
最後のコマンドを繰り返して、 -p
(完了率)オプションをpv
に渡します。
tar -czf-./help-files/ | pv --p> help-files.tgz
これにより、他のすべての表示オプションがオフになります。 pv
は、完了した要素のパーセンテージのみを提供します。
pv
はtar
から完了率の数値を取得しないため、進行状況バーは移動インジケーターに置き換えられます。 パーセンテージの数字はありません。
wcでpvを使用する
pv
を使用して、テキストファイル(または複数のファイル)をwc
にパイプできます。 次に、 wc
はキャリッジリターン、文字、および単語をカウントし、 pv
は進捗レポートを提供します。
ここでは、help-filesディレクトリ内のすべての「.page」ファイルをwc
にパイプしています。
wc
が完了すると、help-filesフォルダー内のすべての「.page」ファイルからのキャリッジリターン(行)、文字、および単語の数を確認できます。
progressコマンドのインストール
progress
コマンドは、 pv
と同じ種類の有用な情報を提供しますが、特定のLinuxコマンドのセットで機能します。
Ubuntuにprogress
をインストールするには、次のコマンドを使用します。
sudoapt-インストールの進行状況を取得する
progress
をFedoraにインストールするには、次のコマンドを使用します。
sudodnfインストールの進行状況
Manjaroにprogress
をインストールするには、次のコマンドを使用します。
sudo pacman -Syu progress
コマンドの進行状況は
ターミナルウィンドウでprogress
を入力してEnterキーを押すと、 progress
機能するコマンドのリストが表示されます。
進捗
パイプでの進行状況の使用
コマンドのprogress
を監視するために使用できる手法は2つあります。 1つ目はパイプを使用することです。
tar
コマンドは、 progress
が監視できるサポートされているコマンドのリストに含まれているので、 tar
を使用しましょう。
使用するオプションは、標準の-c
(アーカイブの作成)、- -z
(gzipで圧縮)、および-f
(ファイル名)オプションです。 ヘルプファイルフォルダにすべての圧縮アーカイブを作成します。アーカイブの名前は「help.tgz」になります。
progress
のパイプを作成し、 -m
(モニター)オプションを使用しているため、 progress
はプロセスが完了するまでレポートを継続します。
tar -czf help.tgz ./help-files/ | プログレス-m
ターミナルウィンドウには、アーカイブの作成時にtar
コマンドの進行状況が表示されます。
各ファイルが処理されると、次の情報とともに一覧表示されます。
- プロセスID。
- プロセス名。
- 完了したパーセンテージ。
- 処理されたデータとファイルの合計サイズ。
- データレート(スループット)。
- 推定残り時間(ETA)。
2番目のデータセットが表示されるのを見て驚くかもしれません。 この最初のデータセットはtar
用です。 2つ目はgzip
用です。 tar
はgzip
を呼び出して圧縮を実行します。 gzip
はサポートされているコマンドのリストに含まれているため、 progress
報告されます。
継続監視モードでの進行状況の使用
-M(モニター)オプションを使用すると、リアルタイムの継続モニターモードでprogress
を使用できます。
ターミナルウィンドウで次のコマンドを入力します。
プログレス-M
progress
は、監視するコマンドが実行されていないことを報告します。 ただし、コマンドラインには戻りません。 progress
は、監視できるコマンドが開始されるまで待機します。 その後、自動的にレポートを開始します。
別のターミナルウィンドウで、進行状況が監視できるコマンドのリストにあるコマンドを入力します。
cat
を使います。 終了が速すぎるコマンドはprogress
に登録されないため、非常に長いテキストファイルの内容を一覧表示します。
猫words.page
progress
が表示されたターミナルウィンドウに、 cat
コマンドが実行され、完了に向けて動作するときの統計が表示されます。
cat
がリストの一覧表示を終了すると、 progress
は待機状態に戻ります。
レポートできるコマンドの1つがかなりのタスクを実行するたびに、 progress
はそれを自動的に監視してレポートします。
それはかなりきちんとしています。
100%完了
長時間実行されるコマンドがどのように実行されているのか不思議に思うことから当て推量を取り除き、 pv
とprogress
でカーソルを熟考するのをやめてください。
Linuxコマンド | ||
ファイル | tar・pv・cat・tac・chmod・grep・diff・sed・ar・man・pushd・popd・fsck・testdisk・seq・fd・pandoc・cd・$ PATH・awk・join・jq・fold・uniq・journalctl・tail・stat・ls・fstab・echo・less・chgrp・chown・rev・look・strings・type・rename・zip・unzip・mount・umount・install・fdisk・mkfs・rm・rmdir・rsync・df・gpg・vi・nano・mkdir・du・ln・patch・convert・rclone・shred・srm | |
プロセス | エイリアス・screen・top・nice・renice・progress・strace・systemd・tmux・chsh・history・at・batch・free・which・dmesg・chfn・usermod・ps・chroot・xargs・tty・pinky・lsof・vmstat・タイムアウト・wall・yes・kill・sleep・sudo・su・time・groupadd・usermod・groups・lshw・shutdown・reboot・halt・poweroff・passwd・lscpu・crontab・date・bg・fg | |
ネットワーキング | netstat・ping・traceroute・ip・ss・whois・fail2ban・bmon・dig・finger・nmap・ftp・curl・wget・who・whoami・w・iptables・ssh-keygen・ufw |
関連:開発者と愛好家のための最高のLinuxラップトップ