Linuxメモ : progressでLinuxコマンド(cp, mv, dd, tar, cat…)の進捗を表示
インストール
READMEにはソースコードからビルドする方法が書かれていたのでビルドしてみる。ビルドにはlibncurses5-dev
かncurses-devel
が必要とのこと。
実際にビルドしてみたところコードは少ないのですぐに終わった。
$ git clone https://github.com/Xfennec/progress $ cd progress $ make cc -g -Wall -D_FILE_OFFSET_BITS=64 -c progress.c cc -g -Wall -D_FILE_OFFSET_BITS=64 -c sizes.c cc -g -Wall -D_FILE_OFFSET_BITS=64 -c hlist.c cc -Wall progress.o sizes.o hlist.o -o progress -lm -lncurses $ sudo make install Installing program to /usr/local/bin ... Installing manpage to /usr/local/share/man/man1 ... $ progress -v progress version 0.13
ヘルプメッセージ。デフォルトで監視対象とするコマンドが書かれている。
$ progress --help 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 7z 7za zcat bzcat lzcat split gpg 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) -a --additional-command cmd add additional command to default command list -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: -a -c -p -i. Use PROGRESS_ARGS for permanent arguments.
使い方
基本的にはcp
などのコマンドを実行しているときにprogress
コマンドを実行すれば進捗が表示される(定期的に監視するわけではなくその時点の進捗を表示)。
cp
時にprogress
を実行している必要はなく、後からprogress
を実行して進捗を表示できるのがよい。
定期的に監視したい場合はwatch
コマンドと組み合わせる。-q
オプションを付けないと余計なメッセージが表示される。
$ watch progress -q
ワンライナーで実行する場合は、バックグラウンドで実行してプロセスIDを-p
オプションでprgress
に渡せばよい(-m
は実行中は監視し続けるというオプション)。
$ cp test.log test.log.bak & progress -mp $!
その他の使用例として下記コマンドが挙げられていた。
Firefoxでのダウンロードの進捗を表示。-c
オプションで監視対象にするコマンドを指定できる(ヘルプに書かれているデフォルトで監視対象とするコマンド以外でもいい)。-w
オプションはスループットなどを表示。
$ watch progress -wc firefox
Webサーバの状況監視。
$ progress -c httpd
ちなみにパイプ処理の進捗を表示するpv
(Pipe Viewer)というコマンドもある。