とことんDevOps | 日本仮想化技術のDevOps技術情報メディア

DevOpsに関連する技術情報を幅広く提供していきます。

日本仮想化技術がお届けする「とことんDevOps」では、DevOpsに関する技術情報や、日々のDevOps業務の中での検証結果、TipsなどDevOpsのお役立ち情報をお届けします。
主なテーマ: DevOps、CI/CD、コンテナ開発、IaCなど
読者登録と各種SNSのフォローもよろしくお願いいたします。

progressで進捗状況を表示する

前回のブログ記事「pvコマンドでプログレスバーを表示」でプログレスバーを表示できるツールを紹介しました。この記事の最後にprogressもいいよっと言っていたのでprogressも紹介します。

progressとは

github.com

progressは実行中のGNU Coreutilsのコマンドの進捗表示ができるツールです。|(パイプ)で繋いでいくpvとは違い、PIDを渡して進捗状況を表示できるため、プログレスバーを表示するための工夫を自分でする必要がありません。

インストール方法はこちらを参考にしてください。

使ってみる

$ cp bigfile newfile &

今回はcpを&でバックグランド実行にしましたが、別のターミナルを開いても進捗表示できます。

progress -m

progressコマンドは実行中のCoreutilsコマンドを探しだし、進捗を表示します。なのでprogressコマンドにどのコマンドの進捗を表示するか伝える必要がりません。

特定のコマンドの進捗を指定したい場合はPIDを渡す方法があります。

$  cp bigfile newfile & progress -mp $!

Coreutils以外のコマンドで進捗を表示するには「-c(--command)」オプションでコマンドを渡し実行します。

$ progress -wmc firefox

このコマンドではfirefoxでファイルをダウンロードする時に進捗を表示します。「-w(--wait)」は何か動きがあるまで進捗表示を待機させるオプションです。

なぜダウンロード中の進捗を表示できるかはこちらに記載があります。

It simply scans /proc for interesting commands*, and then looks at directories fd and fdinfo to find opened files and seek positions, and reports status for the largest file.

開いているファイルステータスを表示するようですね。

まとめ

pvコマンドとは違い、自分でコマンド順を工夫することなく 進捗表示できました。

何らかのコマンドを実行してから「あぁ、これは長いコマンドかもしれない・・・」となった時でも、別のターミナルから進捗を表示できるため便利だと思いました。