ファイルのコピーや移動、アーカイブなどで巨大なファイルを操作する場合、どこまでその作業が進んでいるのか途中で進捗状況を知りたくなることがあります。
最初に「-v」オプションなどを指定すれば、状況を通知してくれるコマンドもありますが、コマンド実行時にオプションを指定し忘れた場合には役にたちません。
本日紹介する「progress」はこのような場合にも役立つ、各種コマンドの進捗状況表示ツールです。例えばcpでファイルが何%コピー済みなのか、progressを実行するだけで確認することができます。
LinuxとmacOSにだけ対応したツールで、cpやmv、dd、tar、gzip/gunzip、catなどcoreutilsで提供されているような基本的なコマンドに対応しています。
progressの使用方法
macOSで使用する場合、Homebrew利用してインストールするのが簡単です。
brew install progress
コマンドを実行していない時に実行すると、以下のようなヘルプメッセージが表示されます。
▲cp、mv、dd、tar、cat、rsync、grep、fgrep…などに対応していることがわかります。
最も簡単な使用例はファイルコピーの進捗状況を見るものかもしれません。
ターミナルを二つ立ち上げ、一つのウィンドウで「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」を押すことで情報を表示することもできるようです。