Chciałem utworzyć losowy plik 1 GB, więc użyłem następującego polecenia.
dd if=/dev/urandom of=output bs=1G count=1
Zamiast tego za każdym razem, gdy uruchamiam to polecenie, otrzymuję plik 32 MB:
<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
Co jest nie tak?
EDYTOWAĆ:
Dzięki świetnym odpowiedziom w tym temacie doszedłem do rozwiązania, które odczytuje 32 fragmenty o wielkości 32 MB, co daje 1 GB:
dd if=/dev/urandom of=output bs=32M count=32
Podano inne rozwiązanie, które odczytuje 1 GB bezpośrednio do pamięci, a następnie zapisuje na dysku. To rozwiązanie zajmuje dużo pamięci, więc nie jest preferowane:
dd if=/dev/urandom of=output bs=1G count=1 iflag=fullblock
head
nie może wykonać tego zadania bez -c
opcji, która nie jest w POSIX . Nie znam żadnej wersji, cat
która mogłaby to rozwiązać. rsync
jest całkowicie niestandardowym narzędziem. Tego tu nie ma; przeglądając stronę podręcznika, nie widzę też, jak mógłby rozwiązać ten problem.
/dev/urandom
nie ma go również w POSIX ...
dd
. Używałbymhead
,cat
alborsync
prawie zawsze na swoim miejscu. I twoje pytanie, czy jeden z powodów, dla których alternatywy są zwykle bezpieczniejsze.