Linux dd命令 在运行时显示进度

-从此不再焦虑到底dd了多少

问题

在 Linux/Unix 类系统中,dd命令是一个非常实用的工具,它可以用来复制文件、磁盘、分区等。但是,当dd命令在运行时,它不会显示任何进度信息,这可能会让你感到焦虑和困惑:到底 dd 了多少啊啊啊啊啊。那么,有没有办法让dd命令在运行时显示进度呢?

解决方案

dd 命令加上 status=progress 参数

在 GNU Coreutils 8.24版本之后,dd命令增加了一个status=progress参数,可以用来显示进度信息。你可以像下面这样使用它:

1
dd if=/dev/zero of=/dev/null bs=1M count=1000 status=progress

status=progress参数会让dd命令显示进度信息,如图

dd-progress.png

使用 kill 命令

如果你只是想查看dd命令的进度信息,也可以使用kill命令来实现。你可以像下面这样使用它,我们做一个小实验:

1
2
3
4
5
6
# 启动dd命令
dd if=/dev/zero of=/dev/null bs=10M count=100000 & # 放到后台执行
# 获取dd命令的进程ID
PID=$!
# 每隔1秒输出进度信息
while ps -p $PID > /dev/null; do kill -USR1 $PID; sleep 1; done

在这个示例中,我们使用dd命令从/dev/zero设备读取数据,并将其写入/dev/null设备。然后,我们使用kill命令每隔 1 秒输出dd命令的进度信息。

这种方法可以在不安装额外软件的情况下实现显示进度信息的功能,毕竟kill命令是 Linux 系统自带的工具,同时,这个也适用于最开始执行dd后忘记加status=progress 参数时,可以用这种方法补救。

总结

以上就是在 Linux/Unix 系统中使用dd命令显示进度信息的两种常用方法。你可以根据自己的需求选择合适的方法。

转载需要保留原始链接,未经明确许可,禁止商业使用。支持原创 CC BY-NC-SA 4.0
辽ICP备18009435号-1
Hugo 强力驱动
主题 StackJimmy 设计