progress - cpやmv等のコマンドの進捗状況を確認できるモニタリグツール

S 20180521 103146

ファイルのコピーや移動、アーカイブなどで巨大なファイルを操作する場合、どこまでその作業が進んでいるのか途中で進捗状況を知りたくなることがあります。

最初に「-v」オプションなどを指定すれば、状況を通知してくれるコマンドもありますが、コマンド実行時にオプションを指定し忘れた場合には役にたちません。

本日紹介する「progress」はこのような場合にも役立つ、各種コマンドの進捗状況表示ツールです。例えばcpでファイルが何%コピー済みなのか、progressを実行するだけで確認することができます。

LinuxとmacOSにだけ対応したツールで、cpやmv、dd、tar、gzip/gunzip、catなどcoreutilsで提供されているような基本的なコマンドに対応しています。

progressの使用方法

macOSで使用する場合、Homebrew利用してインストールするのが簡単です。

brew install progress

コマンドを実行していない時に実行すると、以下のようなヘルプメッセージが表示されます。

S 20180521 101408

▲cp、mv、dd、tar、cat、rsync、grep、fgrep…などに対応していることがわかります。

最も簡単な使用例はファイルコピーの進捗状況を見るものかもしれません。

S 20180521 101451

ターミナルを二つ立ち上げ、一つのウィンドウで「cp」で大きなファイルをコピーした後、別のウィンドウでprogressを実行すると、コピーの進捗状況が表示されます。

progressはそのまま実行するだけでなく各種オプションを指定することができます。

$ progress -h
progress - Coreutils Viewer
---------------------
Shows progress on file manipulations (cp, mv, dd, ...)

Monitored commands (default):
cp mv dd tar cat rsync grep fgrep egrep cut sort md5sum sha1sum sha224sum sha256sum sha384sum sha512sum adb gzip gunzip bzip2 bunzip2 xz unxz lzma unlzma zcat bzcat lzcat

Usage: progress [-qdwmM] [-W secs] [-c command] [-p pid]
  -q --quiet                 hides all messages
  -d --debug                 shows all warning/error messages
  -w --wait                  estimate I/O throughput and ETA (slower display)
  -W --wait-delay secs       wait 'secs' seconds for I/O estimation (implies -w, default=1.0)
  -m --monitor               loop while monitored processes are still running
  -M --monitor-continuously  like monitor but never stop (similar to watch progress)
  -c --command cmd           monitor only this command name (ex: firefox)
  -p --pid id                monitor only this process ID (ex: `pidof firefox`)
  -i --ignore-file file      do not report process if using file
  -o --open-mode {r|w}       report only files opened for read or write
  -v --version               show program version and exit
  -h --help                  display this help and exit


Multiple options allowed for: -c -p -i. Use PROGRESS_ARGS for permanent arguments.

▲「progress -h」で確認可能です。

公式サイトには以下のような使用例が掲載されています。

実行中のcoreutilsコマンドの進捗状況を監視する:

watch progress -q

ダウンロードの進捗を確認:

watch progress -wc firefox

Webサーバーのアクティビティを確認:

progress -c httpd

"$!"を利用する:

cp bigfile newfile & progress -mp $!

工夫しだいでさまざまな活用方法がありそうです。

まとめ

progressを使用すれば実行中のcpやmv等のコマンドの進捗状況を確認できます。同種のコマンド「pv」とあわせいざというときに使えるにようしておけば便利そうです。なおmacOSの場合cp実行中に「Ctrl + T」を押すことで情報を表示することもできるようです。

S 20180521 103743

スポンサーリンク