为什么在我的(低端笔记本电脑)系统上产生1 KiB文件需要5分钟而且负载很小?我怎样才能更快地生成随机二进制文件?
$ time dd if=/dev/random of=random-file bs=1 count=1024
1024+0 records in
1024+0 records out
1024 bytes (1.0 kB) copied, 303.266 s, 0.0 kB/s
real 5m3.282s
user 0m0.000s
sys 0m0.004s
$
Run Code Online (Sandbox Code Playgroud)
请注意,dd if=/dev/random of=random-file bs=1024 count=1这不起作用.它生成一个随机长度的随机二进制文件,大多数运行在50 B以下.有没有人对此有解释?
Ste*_*202 29
这是因为在大多数系统中/dev/random使用来自环境的随机数据,例如来自外围设备的静态数据.它使用的真正随机数据(熵)池非常有限.在有更多数据可用之前,输出块.
用/dev/urandom(注意u)重试你的测试,你会看到一个显着的加速.
有关更多信息,请参阅Wikipedia./dev/random并不总是输出真正的随机数据,但显然在你的系统上输出.
示例/dev/urandom:
$ time dd if=/dev/urandom of=/dev/null bs=1 count=1024
1024+0 records in
1024+0 records out
1024 bytes (1.0 kB) copied, 0.00675739 s, 152 kB/s
real 0m0.011s
user 0m0.000s
sys 0m0.012s
Run Code Online (Sandbox Code Playgroud)
Lan*_*ing 12
尝试/dev/urandom改为:
$ time dd if=/dev/urandom of=random-file bs=1 count=1024
Run Code Online (Sandbox Code Playgroud)
来自:http://stupefydeveloper.blogspot.com/2007/12/random-vs-urandom.html
random和urandom之间的主要区别在于它们如何从内核中提取随机数据.随机总是从熵池中获取数据.如果池为空,则随机将阻止操作,直到池充满.在内核熵池为空的情况下,urandom将使用SHA(或任何其他算法,有时是MD5)算法来生成数据.urandom永远不会阻止操作.
| 归档时间: |
|
| 查看次数: |
21250 次 |
| 最近记录: |