我如何知道 dd 是否仍在工作?

我如何知道 dd 是否仍在工作?

我没有使用dd太多,但到目前为止它还没有让我失望。现在,我已经进行了dd超过 12 个小时 - 我正在将图像写回到它来自的磁盘 - 我有点担心,因为我能够dd在大约7小时。

我在配备 Core 2 Duo、2.1ghz/core 和 4gb RAM 的 MacBook 上运行 OSX 10.6.6。我正在从 7200rpm 硬盘驱动器(启动驱动器)上的 .dmg 读取数据,并且正在写入通过 SATA 至 USB 连接器连接的 7200rpm 驱动器。我将块大小保留为默认值,图像约为 160GB。

编辑:而且,经过 14 小时的纯粹压力后,效果dd还是很完美。不过,下次我将运行它pv并使用 跟踪它strace。感谢大家的帮助。

答案1

你可以发送dd某个信号使用kill命令使其输出当前状态。该信号INFO适用于 BSD 系统(包括 OSX)和USR1Linux。在你的情况下:

kill -INFO $PID

您可以使用以下命令找到进程 ID($PID上面)ps;或看Mac OS X 上的 pgrep 和 pkill 替代品以获得更方便的方法。

更简单地说,如安托万·G指出在他的回答,您可以ctrl-T在运行 dd 的 shell 中输入来向其发送INFO信号。

作为 Linux 上的示例,您可以使所有活动dd进程输出状态,如下所示:

pkill -USR1 -x dd

输出其状态后,dd将继续应对。

答案2

在 OS X 下(没有在 Linux 上尝试),您只需在运行的终端中键入Ctrl+即可。它将打印与 相同的输出,加上 CPU 使用率:Tddkill -INFO $PID

load: 1.40  cmd: dd 34536 uninterruptible 3.49u 64.58s
5020305+0 records in
5020304+0 records out
2570395648 bytes transferred in 4284.349974 secs (599950 bytes/sec)

我发现它阅读此线程,并尝试在我的终端中打开一个新选项卡,但将+TCtrl+混合T

答案3

对于dd,你可以发送信号。对于读取或写入文件的其他命令,您可以使用以下命令查看它们在文件中的位置lsof

lsof -o -p1234    # where 1234 is the process ID of the command
lsof -o /path/to/file

如果您提前计划,请通过管道传输数据pv

答案4

coreutilsv8.24 开始,dd原生支持显示进度。只需添加选项即可status=progress

例子:

dd if=arch.iso of=/dev/sdb bs=4M status=progress

来源

相关内容