如何使 dd 命令变得冗长?

sbr*_*own 38 command-line

我想通过克隆图像使 USB 可启动。我做了一些研究,但我没有找到一种令人满意的方法让 dd 向控制台提供一些关于进度如何的反馈。

除了通过 ps 命令轮询 PID 之外,是否有内置于命令中的方法来执行此操作?

wal*_*tor 48

如果您阅读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
Run Code Online (Sandbox Code Playgroud)

在缺少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
[~]$ 
Run Code Online (Sandbox Code Playgroud)

  • status=progress 可能是 99.99% 的每个人都在寻找的东西,但是阅读 INFO 和 USR1 信号很好,提醒我我对一切知之甚少 (4认同)

Pan*_*her 27

谷歌搜索提供了多种解决方案。

来自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
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

您可能需要安装 dialog 和 pv

sudo apt-get install pv dialog
Run Code Online (Sandbox Code Playgroud)