查看 dd 的进度

kevin.Zhu 发布于:2013-10-27 14:34 分类:Linux  有 17 人浏览,获得评论 0 条  

当我们从一个设备 dd 一个大文件到另一个设备,比如:

# dd if=/dev/zero of=/dev/sdb bs=1MB count=1000000

这时候 dd 要执行很久才会返回,有时候我们希望能看到它的执行进度,比如已经写了多少数据到 /dev/sdb,速度是多少。

其实 dd 提供了一个这样的接口,只是需要用 signal 来触发。

首先我们要找到这个进程的 pid:

# ps axf ... 4943 pts/12 Ss 0:00 \_ /bin/bash 5152 pts/12 D+ 7:01 \_ dd if=/dev/zero of=/dev/sdb bs=1MB count=1000000 ...

然后给这个进程发送 SIGUSR1:

# kill -SIGUSR1 5152

因为 dd 处理了 SIGUSR1,所以 kill 并不会把它杀死,当 dd 收到这个 signal 后会在执行终端打印信息:

记录了326545+0 的读入
记录了326545+0 的写出
167191040字节(167 MB)已复制,21.5566 秒,7.8 MB/秒

如果找不到 pid,也可以用 killall 来替代 kill:

# killall -SIGUSR1 dd