如何跟踪dd的进度


Answers:


57

可以使用您的命令显示相同的信息,这些信息每秒显示在klanomath的答案中。您只需controlTdd执行命令时从键盘输入一个字符。

通过按下controlT字符,您将向该命令发送的命令发送相同的SIGINFO信号。ddpkill -INFO -x dd


25

从coreutils 8.24开始,dd添加了状态选项。使用Homebrew安装coreutils以更新dd。

brew install coreutils
# All commands have been installed with the prefix 'g'
sudo gdd if=XXXX.iso of=/dev/diskX bs=1 status=progress 

> example:
> 139648967 bytes (140 MB, 133 MiB) copied, 304 s, 459 kB/s    

3
不了解coreutils,非常方便。
SteveLambert

1
尽管这样做可以,但是您可以取消使用原始磁盘
eyoung100 '18

8

dd本身不提供进度条。您可以通过添加pkill -INFO命令来估计dd复制过程的进度。

例:

dd if=/dev/zero of=/dev/null bs=64m count=1000 & while pkill -INFO -x dd; do sleep 1; done

结果:

[1] 37691
0+0 records in
0+0 records out
0 bytes transferred in 0.028923 secs (0 bytes/sec)
275+0 records in
275+0 records out
18454937600 bytes transferred in 1.029698 secs (17922667819 bytes/sec)
553+0 records in
553+0 records out
37111201792 bytes transferred in 2.048291 secs (18118129881 bytes/sec)
829+0 records in
829+0 records out
55633248256 bytes transferred in 3.068911 secs (18128009214 bytes/sec)
1000+0 records in
1000+0 records out
67108864000 bytes transferred in 3.720346 secs (18038339571 bytes/sec)
[1]+  Done                    dd if=/dev/zero of=/dev/null bs=64m count=1000

这相当于高达18.1 GB / s。


您在其上运行该命令的计算机的硬件规格是什么?
user3439894 '16

@ user3439894 3.5 GHz i7 iMac。为什么?
klanomath '16

只是因为字节/秒的输出而感到好奇,顺便说一句,实际上是16.8 GB / s(向上舍入),因为这些是基数2,而不是基数10的计算。
user3439894'4

5

首先,安装Homebrew Package Manager。然后,您必须安装pvdialog使用以下命令:

brew install pv dialog

然后,您可以运行以下命令以使用以下命令获取进度条:

dd if=disk.img bs=1m | pv disk.img | dd of=/dev/diskX bs=1m

但请确保将其替换disk.img为映像路径和diskXSD卡的磁盘标识符。如果您想要更多图形化的内容,可以尝试以下操作:

(dd if=disk.img bs=1m | pv -n disk.img | dd of=/dev/diskX bs=1m conv=notrunc,noerror) 2>&1 | dialog --gauge "Writing image to SD card..." 10 70 0

资料来源:https : //askubuntu.com/a/516724/765767


3

您可以在命令运行时按Control+ tddpv通过Homebrew 安装(管道查看器)以获得良好的进度条:

brew install pv

然后执行:

sudo dd if=disk-image.img | pv | sudo dd of=/dev/disk2

或(知道图像的大小,在此示例中为16GB):

dd if=disk-image.img | pv -s 16G | dd of=/dev/disk2


示例输出2:

(数据传输,经过时间,速度,进度条和估计时间):

    1.61GiB 0:12:19 [2.82MiB/s] [===>                 ] 10% ETA 1:50:25

2

很简单!对于macOS High Sierra及以下版本,只需运行一会儿循环,它将一直运行到完成为止。只要确保在另一个窗口中执行以下代码即可:

在固件启动时或在完整操作系统中,以下代码将立即可用

while kill -0 $PID; do $(caffeinate -t 10) $(kill - INFO $PID) echo “still copying file” “$(date)”; done

^为了使机器保持唤醒状态(含咖啡因),而不使用“自制软件”或标准Mac OS X中不提供的工具,因为自制软件需要Internet和实际的操作系统才能安装。

注意:以上内容需要您用进程ID替换PID,它将不断显示进度


我还发现要保持机器处于唤醒状态,这样您就不会再回到睡眠状态,而必须不断唤醒它。
Don-Pierre Halfaway

上面的脚本告诉您日期,为您提供复制的状态,并每10秒保持唤醒状态
Don-Pierre Halfaway

当您不使用完整操作系统时,最好将其用于Mac上的终端。但是在Firmaware / BIOS中。绝对是一个值得纪念的解决方案
Don-Pierre Halfaway '18

的目的是$(...)什么?我知道它们的一般用途,我只是想知道为什么在这里使用它们?
nohillside

转义空格,使命令在一行内全部运行。我敢肯定我可以将“(”和“)”加倍,但我希望人们能以一种外行的方式看到可用的选项
Don-Pierre Halfaway
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.