0

乗法接尾辞を理解しない特定のバージョンの 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

4

2 に答える 2

1

Gは標準のサフィックスではありません。したがって、動作は未定義です。

標準のサフィックスはk(1024) とb(512) のみです。他に何かが必要な場合はx、接尾辞を付けた複数の数値を乗算して使用できます。

dd bs=1024 count=75x1024x1024x1024

(あなたの例では、ほとんど問題のない 75GiB の RAM を割り当てようとするため、bsandを切り替えましたcount)

POSIXの内容は次のとおりです。

bs=、cbs=、ibs=、および obs= オペランドの場合、アプリケーションはサイズをバイト単位で指定する式を提供する必要があります。式 expr は次のようになります。

正の 10 進数

正の 10 進数の後に k を付け、1024 による乗算を指定します。

512 による乗算を指定する、正の 10 進数の後に b が続く

示された値の積を指定する、x で区切られた 2 つ以上の正の 10 進数 (k または b の有無にかかわらず)

于 2016-01-08T00:27:15.553 に答える
0

あなたは32ビットで、75Gはsize_tよりも大きいと思います。64 ビットでも、dd は bs で指定されたサイズのバッファーを割り当てるため、少なくともその量のメモリが必要です。

于 2016-01-08T00:15:34.747 に答える