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 docsから:

‘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

もう 1 つのことは、/dev/randomカーネル プールが空の場合にブロックされることです。代わりに試すことができます/dev/urandom。これは、プールが空のときにブロックせずに他の方法を使用して数値を生成します。

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