为何dd从管道读取时未达指定count就退出?仅复制60块
问题原因分析
你的dd命令未完成指定count=64的读取/写入任务,核心原因大概率是以下两点之一:
- 目标设备空间不足:你写入的
mtd文件很可能是一个容量有限的设备(比如MTD闪存分区、内存虚拟设备等),它的可用容量恰好为619824字节。当dd写入到这个容量上限时,设备返回“无剩余空间”的错误,dd随即终止运行,自然无法完成64个10000字节块的写入目标。 - 管道上游命令意外终止(概率极低):虽然
/dev/zero是无限字符源,cat不会主动停止,但如果tr命令在字符转换过程中遇到未预期的输入错误(这种情况极为罕见),会提前终止输出,导致dd没有足够的输入数据来完成指定的count。
验证方式
- 查看
mtd的实际容量:如果是设备文件,可使用blockdev --getsize64 mtd查看字节容量;如果是普通文件,用ls -l mtd查看大小。 - 尝试向
mtd写入更大的文件(比如dd if=/dev/zero of=mtd bs=1M count=1),若提示“空间不足”类错误,即可确认是容量限制导致的问题。
内容的提问来源于stack exchange,提问作者yuanjianpeng
相关产品推荐
相关产品推荐

