为什么dd从管道里读取的数据不足就会直接退出?
我想读取64个块,但只拷贝了60个块
$ cat /dev/zero | tr '\0' '\377' | dd bs=10000 count=64 of=mtd
60+4 records in
60+4 records out
619824 bytes (620 kB, 605 KiB) copied, 0.000470952 s, 620 MB/s
解决方案
管道经常会返回短读,因此你会看到60+4。
因此dd实际读取了64个块,但只有60个是完整块,4个是短读。
一个简单的修复方法是持续读取,直到每个块都被完全填满。
按照下面的方式添加iflag参数,应该能起作用。
dd bs=10000 count=64 iflag=fullblock of=mtd
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。