ddコマンドでナビゲーションとスキップの違いは何ですか?

ddコマンドでナビゲーションとスキップの違いは何ですか?

ディスクからデータを読み込もうとしていますが、dd各要求をランダムに実行し、ディスクの読み取り操作の待ち時間を確認するコマンドが必要です。これら2つのタスクを「検索」と「スキップ」を使用しましたが、効果はありますか?

dd if=/dev/rdsk/c2t5000CCA0284F36A4d0 skip=10  of=/dev/null bs=4k count=1024000
1024000+0 records in
1024000+0 records out
4194304000 bytes (4.2 GB) copied, 51.0287 s, 82.2 MB/s


dd if=/dev/rdsk/c2t5000CCA0284F36A4d0  seek=10  of=/dev/null bs=4k count=1024000
1024000+0 records in
1024000+0 records out
4194304000 bytes (4.2 GB) copied, 51.364 s, 81.7 MB/s

誰かがディスクからデータを読み取る新しい方法を提案できますか?

答え1

skipiseek(一部の実装でも呼び出されますdd)は、入力ストリームの現在のポインタを移動すると同時に、出力ストリームの現在のseekポインタを移動します。

したがって、を使用すると、skip入力ストリームの先頭の一部のデータを無視できます。

通常、(常にそうではない)出力ストリームの先頭にあるデータを保存するためにseek一緒に使用されます。conv=notrunc

答え2

マニュアルページからdd

seek=BLOCKS
skip BLOCKS obs-sized blocks at start of output
skip=BLOCKS
skip BLOCKS ibs-sized blocks at start of input

これは次のように書き直すことができます。

seekファイルの先頭からnブロックをスキップしますoutput

skipファイルの先頭からnブロックをスキップしますinput

答え3

次の例では、まず入力ファイルと出力ファイルを準備し、次に入力の一部を出力ファイルの一部にコピーします。

echo     "IGNORE:My Dear Friend:IGNORE"      > infile
echo "Keep this, OVERWRITE THIS, keep this." > outfile
cat infile
cat outfile
echo
dd status=none \
   bs=1 \
   if=infile \
   skip=7 \
   count=14 \
   of=outfile \
   conv=notrunc \
   seek=11

cat outfile

ddのパラメータは次のとおりです。

status=none  Don't output final statistics as dd usually does - would disturb the demo
bs=1         All the following numbers are counts of bytes -- i.e., 1-byte blocks.
if=infile    The input file
skip=7       Ignore the first 7 bytes of input (skip "IGNORE:")
count=14     Transfer 14 bytes from input to output
of=outfile   What file to write into
conv=notrunc Don't delete old contents of the output file before writing.
seek=11      Don't overwrite the first 11 bytes of the output file
             i.e., leave them in place and start writing after them

スクリプトを実行した結果は次のとおりです。

IGNORE:My Dear Friend:IGNORE
Keep this, OVERWRITE THIS, keep this.

Keep this, My Dear Friend, keep this.

「skip」と「seek」の値が変わったらどうなりますか? ddは入力の間違った部分をコピーし、出力ファイルの間違った部分を上書きします。

Keep thear Friend:IGNTHIS, keep this.

関連情報