我想知道是否有某些版本的dd不了解乘法后缀。从dd手册页面上可以看出:
bs=BYTES
read and write BYTES bytes at a time (also see ibs=,obs=)
BLOCKS and BYTES may be followed by the following multiplicative suffixes: c =1, w =2, b =512, kB =1000, K =1024, MB =1000*1000, M =1024*1024, xM =M GB =1000*1000*1000, G =1024*1024*1024, and so on for T, P, E, Z, Y.
但是当我在bs参数上运行带有G后缀的dd时,我得到了一个关于数字未被理解的错误:
bash $ dd if=/dev/urandom of=largeMovie.avi count=1024 bs=75G
dd: invalid number `75G'
dd的版本如下:
bash $ dd --version
dd (coreutils) 5.97
A
答案 0 :(得分:1)
G
不是标准后缀。因此行为未定义。
唯一的标准后缀是k
(1024)和b
(512)。如果您还需要其他任何内容,可以在带有后缀的多个数字之间使用x
来乘以:
dd bs=1024 count=75x1024x1024x1024
(您的示例尝试分配75GiB的RAM很少,所以我切换了bs
和count
)
以下是POSIX所说的内容:
对于bs =,cbs =,ibs =和obs =操作数,应用程序应提供一个指定大小(以字节为单位)的表达式。表达式expr可以是:
正十进制数
正十进制数后跟k,指定乘以1024
正十进制数后跟b,指定乘以512
由x分隔的两个或多个正十进制数(带或不带k或b),指定指示值的乘积
答案 1 :(得分:0)
我认为你是32位且75G大于size_t。 即使在64位上,你也至少需要那些可用的mem,因为dd会分配一个bs指定大小的缓冲区。