SIGUSR1を使ってdd の進捗状況を確認する

ddでdisk partitionを丸ごとcopy

# dd if=/dev/sda of=/dev/sdb

とやったのはいいものの、いつ終わるのかわからないので困った。(diskの転送速度と容量でだいたい予測できるけど)

困ったのでman dd 見てたら解決法を発見。USR1 signalを送れば、標準エラーにI/Oの入出力統計を書きだしてくれる。

Sending a USR1 signal to a running ‘dd’ process makes it print I/O
statistics to standard error and then resume copying.
$ dd if=/dev/zero of=/dev/null& pid=$!
$ kill -USR1 $pid; sleep 1; kill $pid

$ dd if=/dev/zero of=./hoge.dat bs=1M count=10240 & pid=$!
[1] 21333
$ kill -USR1 $pid
231+0 records in
231+0 records out
242221056 bytes (242 MB) copied, 4.10931 s, 58.9 MB/s