监控命令 dd

监控命令 dd

当我复制硬盘时,我经常使用 dd 命令

我有一个关于监控的问题。

要查看复制的进度,我喜欢这样做

sudo dd if=$source of=$pathToUsb bs=4M conv=fdatasync status=progress

我收到以下消息:

2969567232 octets (3,0 GB, 2,8 GiB) copiés, 22 s, 134 MB/s

如果我只想检索字节数,我该如何进行?

sudo dd if=$source of=$pathToUsb bs=4M conv=fdatasync status=progress > capture.txt 2>&1

我也尝试过

sudo dd if=$source of=$usb bs=4M conv=fdatasync 2>&1 | awk 'END {print ($0+0)}'

但它不起作用

有任何想法吗 ?

答案1

如果我理解了这个问题,你只需要打印 dd 输出的第一列。以下将 stderr 和 stdout 管道化到 stdbuf,以强制输出到 1 个字符缓冲区大小,这样管道就不会一次缓冲 4K 页。tr 将行回车符替换为换行符,以便 cut 可以一次提取行,并且 cut 选择输出中的一个字段,即来自 dd 的字节数。

dd if=/dev/zero of=/dev/null bs=1M status=progress 2>&1 | stdbuf -o1 tr '\r' '\n' | cut -d' ' -f1

相关内容