查看 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