我想通过克隆映像来制作可启动的 USB。我做了一些研究,但还没有找到一种令人满意的方法让 dd 向控制台提供进度反馈。
除了通过 ps 命令轮询 PID 之外,还有其他方法可以内置在命令中执行此操作吗?
答案1
如果你读过man dd
,它提到了info coreutils 'dd invocation'
其中的部分内容,
INFO
向正在运行的进程发送信号dd
会使其将 I/O 统计信息打印到标准错误,然后恢复复制。在下面的示例中,dd
在后台运行以复制 1000 万个块。该kill
命令会使其输出中间 I/O 统计信息,当dd
正常完成或被信号终止时SIGINT
,它会输出最终统计信息。
$ dd if=/dev/zero of=/dev/null count=10MB & pid=$!
$ kill -s INFO $pid; wait $pid
3385223+0 records in
3385223+0 records out
1733234176 bytes (1.7 GB) copied, 6.42173 seconds, 270 MB/s
10000000+0 records in
10000000+0 records out
5120000000 bytes (5.1 GB) copied, 18.913 seconds, 271 MB/s
INFO
在缺少信号的系统上 ,除非设置了环境变量,否则dd
将响应信号。USR1
POSIXLY_CORRECT
您还可以尝试该status=progress
选项,它将实时显示信息:
[~]$ dd if=/dev/zero of=/dev/null count=10MB status=progress
4708234752 bytes (4.7 GB, 4.4 GiB) copied, 4 s, 1.2 GB/s
10000000+0 records in
10000000+0 records out
5120000000 bytes (5.1 GB, 4.8 GiB) copied, 4.3516 s, 1.2 GB/s
[~]$
答案2
通过谷歌搜索可以找到几种解决方案。
从http://www.cyberciti.biz/faq/linux-unix-dd-command-show-progress-while-coping/
(pv -n /dev/sda | dd of=/dev/sdb bs=128M conv=notrunc,noerror) 2>&1 | dialog --gauge "Running dd command (cloning), please wait..." 10 70 0
您可能需要安装 dialog 和 pv
sudo apt-get install pv dialog