Observe que esses comandos devem ser usados apenas quando você realmente precisar de dados aleatórios de alta qualidade, geralmente para criar boas senhas. Caso contrário, existem mais alternativas leves, por exemplo, o ambiente do shell 'variável' RANDOMpara criar números inteiros positivos aleatórios: echo $RANDOMe o programa shufpara gerar permutações aleatórias, por exemplo, reproduzir em ordem aleatória a partir de uma lista de reprodução.
sudodus
Respostas:
54
É um arquivo como dispositivo, para que você possa fazer coisas como copiá-lo ou copiá-lo. Por exemplo:
Nota: Não faça cat / dev / urandom> ~ / urandom_test2 em sistemas de baixo desempenho -> que congela o sistema
Caner Korkmaz
1
Bem ... isso realmente depende da sua definição de linha. Minha definição é bytes terminated by a \n. O que é seu? head -30 /dev/urandomlhe dará 30 linhas de bytes aleatórios. O comprimento dessas linhas certamente será aleatório. Tente executar wc -lo arquivo de saída se não estiver convencido.
Se você precisar de um certo número de bytes aleatórios, leia esse número de bytes em /dev/urandom.
É um "arquivo especial" criado para ser como um arquivo para leitura de números aleatórios.
Usar catpara ler /dev/urandomé uma péssima idéia, porque tentará ler /dev/urandomaté o fim - mas não termina.
Você pode usar head. Mas lembre-se de ler por byte, não por linha - porque as linhas seriam aleatoriamente separadas por bytes de nova linha aleatórios.
Portanto, para ler 30 bytes aleatórios em um arquivo random.bytes, use:
head -c 30/dev/urandom > random.bytes
Você pode ler como um usuário normal.
Deixe em paz / dev / random
Normalmente, você deseja usar /dev/urandom, não /dev/random.
O problema é que /dev/randomé difícil de usar da maneira certa - e fácil de usar da maneira errada. Usá-lo errado funciona no começo, mas cria problemas de desempenho estranhos - mesmo aleatórios - depois. As vezes.
Quando você usa /dev/urandom, ele faz uso /dev/randominterno, cuidando das partes complicadas.
RANDOM
para criar números inteiros positivos aleatórios:echo $RANDOM
e o programashuf
para gerar permutações aleatórias, por exemplo, reproduzir em ordem aleatória a partir de uma lista de reprodução.Respostas:
É um arquivo como dispositivo, para que você possa fazer coisas como copiá-lo ou copiá-lo. Por exemplo:
Cria um arquivo que contém 4K de bytes aleatórios.
Continuará a escrever bytes aleatórios nesse arquivo até você pressionar Ctrl-C. Não faça isso em um sistema de baixo desempenho ...
Escreve 30 linhas de bytes aleatórios
fonte
bytes terminated by a \n
. O que é seu?head -30 /dev/urandom
lhe dará 30 linhas de bytes aleatórios. O comprimento dessas linhas certamente será aleatório. Tente executarwc -l
o arquivo de saída se não estiver convencido./dev/urandom
é limitado a 32 MiB porread()
edd
não tentará ler mais uma vez que/dev/urandom
produz esses 32 MiB, portanto, você deve ligardd
comiflag=fullblock
. Veja dd está produzindo um arquivo aleatório de 32 MB em vez de 1 GBObter bytes aleatórios
Se você precisar de um certo número de bytes aleatórios, leia esse número de bytes em
/dev/urandom
.É um "arquivo especial" criado para ser como um arquivo para leitura de números aleatórios.
Usar
cat
para ler/dev/urandom
é uma péssima idéia, porque tentará ler/dev/urandom
até o fim - mas não termina.Você pode usar
head
. Mas lembre-se de ler por byte, não por linha - porque as linhas seriam aleatoriamente separadas por bytes de nova linha aleatórios.Portanto, para ler 30 bytes aleatórios em um arquivo
random.bytes
, use:Você pode ler como um usuário normal.
Deixe em paz / dev / random
Normalmente, você deseja usar
/dev/urandom
, não/dev/random
.O problema é que
/dev/random
é difícil de usar da maneira certa - e fácil de usar da maneira errada. Usá-lo errado funciona no começo, mas cria problemas de desempenho estranhos - mesmo aleatórios - depois. As vezes.Quando você usa
/dev/urandom
, ele faz uso/dev/random
interno, cuidando das partes complicadas.fonte
Se você quiser apenas ler com números reconhecidos, pode fazer
fonte
Eu pessoalmente uso isso para gerar tokens:
fonte