7

我想使用 dd 从磁盘上的特定位置(基本上跳过前 50000 字节)开始写入数据,并在前 50000 字节之后开始写入。我试着这样做

dd of=/dev/disk1 if=/dev/random seek=50000

我让上面的行运行了几分钟,然后当我取消它时,我得到了这个

0+6 records in
0+0 records out
0 bytes (0 B) copied, 79.2458 s, 0.0 kB/s

在我看来,没有任何东西被复制。我做错什么了吗?

4

1 回答 1

12

来自dd 文档

‘seek=n’

Skip n ‘obs’-byte blocks in the output file before copying. 
if ‘oflag=seek_bytes’ is specified, n is interpreted as a byte 
count rather than a block count. 

所以看起来你想要这个:

dd of=/dev/disk1 if=/dev/random obs=50000  seek=1

或这个:

dd of=/dev/disk1 if=/dev/random oflag=seek_bytes  seek=50000

另一件事是,/dev/random如果内核池为空,它将阻塞。你可以尝试一下/dev/urandom,当池为空时,它将使用其他方法生成一个数字而不会阻塞:

dd of=/dev/disk1 if=/dev/urandom oflag=seek_bytes  seek=50000
于 2013-03-06T02:59:55.873 回答