理想未来ってなんやねん

娘可愛い。お父さん頑張る。

ddの進行状況を調べる方法

ハードディスクを丸ごとコピーしたり、イメージごとバックアップする時に使うddコマンド。
意外と知られていなかったりするのですが、進行状況を調べる方法があります。


ddコマンドのプロセスにUSR1シグナルを送るだけで、どのぐらい進んでいるのか途中経過を知ることが可能です。

$ dd if=/dev/zero of=/dev/null& pid=$!
$ watch -n 10 kill -USR1 $pid
Every 10.0s: kill -USR1 1414

86584673+0 records in
86584673+0 records out
44331352576 bytes (44 GB) copied, 1823.09 seconds, 24.3 MB/s


偉そうに書いていますが、実はdd --helpを読めば書いています。

$ dd --help
中略
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
  18335302+0 records in
  18335302+0 records out
  9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s


以上、意外と知られていないんじゃなくて、意外とhelpが読まれていないんだなというお話でした。