前回のブログ記事「pvコマンドでプログレスバーを表示」でプログレスバーを表示できるツールを紹介しました。この記事の最後にprogressもいいよっと言っていたのでprogressも紹介します。
progressとは
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コマンドとは違い、自分でコマンド順を工夫することなく 進捗表示できました。
何らかのコマンドを実行してから「あぁ、これは長いコマンドかもしれない・・・」となった時でも、別のターミナルから進捗を表示できるため便利だと思いました。
