![ddがbs = 1Gで34MBファイルを生成するのはなぜですか? [コピー]](https://linux33.com/image/208999/dd%E3%81%8Cbs%20%3D%201G%E3%81%A734MB%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
コマンドを入力するとき:
dd if=/dev/urandom of=outputfile bs=1G count=1
私が理解したことが正しい場合は、1 GBのファイルを受け取る必要があります。
ただし、次の値を含むファイルを受け取りました。
33554431 bytes (34 MB, 32 MiB) copied, 0.27126 s, 124 MB/s
なぜそんなことですか?
稼働しているシステムでは、以下を受け取ります。
1+0 Records in
1+0 Records out
ファイルサイズは34MBになり、以下を受け取りました。
0+1 Records in
0+1 Records out
答え1
デバイスは/dev/urandom
一時的にゼロバイト(データなし)を返します。ユーティリティdd
はそれをEOFとして処理して停止します。これにより、より多くのランダムなデータが生成されることがわかっているため、入力の読み取りを再試行するように指示する必要があり/dev/urandom
ます。dd
dd if=/dev/urandom iflag=fullblock bs=1G count=1
このフラグは、ツールからデータを読み取るときにもiflag=fullblock
必要です(ブロックサイズではなく単位でデータを書き込むなど)。zcat