Я хотел создать случайный файл размером 1 ГБ, поэтому использовал следующую команду.
dd if=/dev/urandom of=output bs=1G count=1
Но вместо этого каждый раз, когда я запускаю эту команду, я получаю файл размером 32 МБ:
<11:58:40>$ dd if=/dev/urandom of=output bs=1G count=1
0+1 records in
0+1 records out
33554431 bytes (34 MB, 32 MiB) copied, 0,288321 s, 116 MB/s
Что случилось?
РЕДАКТИРОВАТЬ:
Благодаря отличным ответам в этой теме я пришел с решением, которое читает 32 блока по 32 МБ, что составляет 1 ГБ:
dd if=/dev/urandom of=output bs=32M count=32
Было дано другое решение, которое считывает 1 ГБ прямо в память, а затем записывает на диск. Это решение занимает много памяти, поэтому оно не является предпочтительным:
dd if=/dev/urandom of=output bs=1G count=1 iflag=fullblock
head
не может выполнить эту задачу без -c
опции, отсутствующей в POSIX . Я не знаю ни одной версии, cat
которая могла бы решить эту проблему. rsync
это совершенно нестандартная утилита. Это ни здесь, ни здесь; Просматривая его справочную страницу, я тоже не вижу, как он может решить эту проблему.
/dev/urandom
не в POSIX либо ...
dd
вообще. Я хотел бы использоватьhead
,cat
илиrsync
на его месте почти всегда. И ваш вопрос, если одна из причин, почему альтернативы, как правило, безопаснее.