Jak korzystać /dev/(u)random
z systemu Ubuntu lub dowolnego systemu * nix?
Próbowałem tego, ale napisano, że odmówiono zgody.
Uwaga: Próbowałem również jako root.
/dev/(u)random
sudo /dev/(u)random
sudo -s; /dev/(u)random
Jak korzystać /dev/(u)random
z systemu Ubuntu lub dowolnego systemu * nix?
Próbowałem tego, ale napisano, że odmówiono zgody.
Uwaga: Próbowałem również jako root.
/dev/(u)random
sudo /dev/(u)random
sudo -s; /dev/(u)random
Odpowiedzi:
Jest to urządzenie podobne do pliku, więc możesz robić takie rzeczy jak cat lub kopiować z niego. Na przykład:
dd if=/dev/urandom of=~/urandom_test count=4 bs=1024
Tworzy plik zawierający 4K losowych bajtów.
cat /dev/urandom > ~/urandom_test2
Będzie kontynuował zapisywanie losowych bajtów do tego pliku, dopóki nie naciśniesz Ctrl-C. Nie rób tego w systemie o niskiej wydajności ...
head -30 /dev/urandom > ~/urandom_test3
Napiszę 30 wierszy losowych bajtów
bytes terminated by a \n
. Co twoje? head -30 /dev/urandom
da ci 30 linii losowych bajtów. Długość tych linii z pewnością będzie losowa. Spróbuj uruchomić wc -l
plik wyjściowy, jeśli nie jesteś przekonany.
/dev/urandom
jest ograniczony do 32 MiB na read()
i dd
nie będzie próbował czytać więcej, gdy zwróci /dev/urandom
te 32 MiB, więc musisz zadzwonić dd
z iflag=fullblock
. Zobacz, jak dd tworzy losowy plik o wielkości 32 MB zamiast 1 GB
Jeśli potrzebujesz określonej liczby bajtów losowych, przeczytaj tę liczbę bajtów /dev/urandom
.
Jest to „plik specjalny”, który jest podobny do pliku do odczytu liczb losowych.
Używanie cat
do czytania z /dev/urandom
to zły pomysł, ponieważ będzie próbował czytać /dev/urandom
do końca - ale się nie kończy.
Możesz użyć head
. Ale uważaj na bajty, a nie na linie - ponieważ linie byłyby losowo oddzielone losowymi bajtami nowej linii.
Tak więc, aby odczytać 30 losowych bajtów do pliku random.bytes
, użyj:
head -c 30 /dev/urandom > random.bytes
Możesz z niego czytać jako zwykły użytkownik.
Normalnie, którego chcesz użyć /dev/urandom
, nie /dev/random
.
Problem polega na tym, że /dev/random
jest trudny do użycia we właściwy sposób - i łatwy do użycia w niewłaściwy sposób. Nieprawidłowe użycie działa na początku, ale później powoduje dziwne - a nawet losowe - problemy z wydajnością. Czasami.
Kiedy używasz /dev/urandom
, korzysta /dev/random
wewnętrznie, dbając o trudne części.
RANDOM
do tworzenia losowych liczb całkowitych dodatnich:echo $RANDOM
oraz programshuf
do generowania losowych permutacji, na przykład odtwarzanie w losowej kolejności z listy odtwarzania.