我有一个带有和(40GB)dd
的命令,每次我尝试运行它时,它都会超出其计数。这是确切的命令,以及在我停止它之前捕获的输出:bs=1M
count=40960M
dd if=/dev/zero of=/swap/swapfile bs=1M count=40960M status=progress
50383028224 bytes (50 GB, 47 GiB) copied, 458 s, 110 MB/s
根据进度输出,它似乎只是无限期地运行,并且可能会继续运行,直到目的地of
完全填满。dd
我对导致其永远运行的误解是什么?
您必须将
bs
和count
参数相乘才能获得实际写入数据的大小。您要求它写入 400 亿(409.6 亿)个块,每个块大小为 1 MB。这是……相当大的数据量。如果您想写入 40 GB,您可以使用
bs=1 count=40960M
、bs=1M count=40960
或一些类似的组合。中的count参数
dd
指定要复制的块的数量,该bs
参数确定块的大小。dd
将M
表示“百万”的后缀解释为二进制乘数。count=40960M
count 参数中的意思是 409.6 亿块,而不是兆字节。这会导致尺寸比您预期的大得多。
删除
M
后缀以计算正确的计数值。这是正确的命令:
dd if=/dev/zero of=/swap/swapfile bs=1M count=40960 status=progress