dd コマンドの進捗を確認したいときは macOS であれば SIGINFO を、Linux (GNU Coreutils) であれば SIGUSR1 を送れば良い。
また、GNU Coreutils の dd には status=progress
というオプションもある。
macOS
まずは macOS から。
使った環境は次の通り。
$ sw_vers ProductName: Mac OS X ProductVersion: 10.14.5 BuildVersion: 18F132
適当にランダムな値でファイルを作らせる。
$ dd if=/dev/urandom of=example bs=1m count=1024
別のターミナルを開いたら killall を使って dd に SIGINFO を送りつける。
$ sudo killall -INFO dd
すると、次のように現状が表示される。
$ dd if=/dev/urandom of=example bs=1m count=1024 298+0 records in 298+0 records out 312475648 bytes transferred in 11.867853 secs (26329585 bytes/sec)
定期的に表示させたいときは watch コマンドと組み合わせると良い。
$ brew install watch
以下のようにすると 1 秒ごとに SIGINFO を送ることができる。
$ watch -n 1 sudo killall -INFO dd
結果として、次のように 1 秒ごとに進捗が表示される。
$ dd if=/dev/urandom of=example bs=1m count=1024 ...(snip)... 501+0 records in 500+0 records out 524288000 bytes transferred in 19.181651 secs (27332788 bytes/sec) 528+0 records in 528+0 records out 553648128 bytes transferred in 20.254623 secs (27334408 bytes/sec) 557+0 records in 557+0 records out 584056832 bytes transferred in 21.357118 secs (27347175 bytes/sec) ...(snip)...
Linux (GNU Coreutils)
続いて Linux を。
使った環境は次の通り。
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=18.04 DISTRIB_CODENAME=bionic DISTRIB_DESCRIPTION="Ubuntu 18.04.2 LTS" $ uname -r 4.15.0-54-generic $ dd --version dd (coreutils) 8.28 Copyright (C) 2017 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by Paul Rubin, David MacKenzie, and Stuart Kemp.
先ほどと同じように適当なファイルを作らせておく。
$ sudo dd if=/dev/urandom of=example bs=1M count=1024
GNU Coreutils の dd であれば SIGUSR1 を送る。
$ sudo killall -USR1 dd
次のように進捗が表示される。
$ sudo dd if=/dev/urandom of=example bs=1M count=1024 95+0 records in 95+0 records out 99614720 bytes (100 MB, 95 MiB) copied, 1.4874 s, 67.0 MB/s
定期的に表示させたいときは、先ほどと同じように watch と組み合わせれば良い。
$ sudo apt-get -y install procps
$ watch -n 1 sudo killall -USR1 dd
次のように定期的に進捗が表示されるようになる。
$ sudo dd if=/dev/urandom of=example bs=1M count=1024 ...(snip)... 348+3 records in 347+3 records out 365930880 bytes (366 MB, 349 MiB) copied, 6.29171 s, 58.2 MB/s 408+3 records in 407+3 records out 428845440 bytes (429 MB, 409 MiB) copied, 7.32246 s, 58.6 MB/s 467+3 records in 467+3 records out 491760000 bytes (492 MB, 469 MiB) copied, 8.34007 s, 59.0 MB/s ...(snip)...
あるいは、もっと単純に status=progress
というオプションを付けても良い。
$ sudo dd if=/dev/urandom of=example bs=1M count=1024 status=progress 605028352 bytes (605 MB, 577 MiB) copied, 10 s, 60.4 MB/s
いじょう。