一尘不染

/ dev / random非常慢?

linux

一些背景信息:我想在Red Hat服务器上运行脚本以从/ dev / random中读取一些数据,并使用Perl
unpack()命令将其转换为十六进制字符串,以备后用(基准数据库操作)。我在/ dev / random上运行了一些“ head
-1”,它看起来工作得很好,但是多次调用后,它还是会挂起。几分钟后,它将最终输出一小段文本,然后结束。

我切换到/ dev /
urandom(我真的不想这么做,它速度较慢,并且我不需要那种随机性),并且在前两三个呼叫中都可以正常工作,然后它也开始挂起。我想知道它是否是轰炸它的“
head”命令,所以我尝试使用Perl做一些简单的I / O,并且它也挂了。作为最后的努力,我使用“
dd”命令将其中的一些信息直接转储到文件中,而不是转储到终端中。我只问它只有1mb的数据,但是花了3分钟才能获得〜400字节,然后才杀死它。

我检查了进程列表,CPU和内存基本未受影响。到底是什么原因可能导致/ dev / random出现这种情况,我该怎么做才能防止/修复它?

编辑: 感谢您的帮助!看来我把随机和乌兰多姆混在一起了。我已经启动并运行了脚本。看来我今天学到了新东西。:)


阅读 502

收藏
2020-06-02

共1个答案

一尘不染

在大多数Linux系统上,/dev/random由环境收集的实际熵提供支持。如果您的系统没有从提供大量数据/dev/random,则可能意味着您没有产生足够的环境随机性来为其供电。

我不确定为什么您认为/dev/urandom质量“较慢”或更高。它重用内部熵池来生成伪随机性-使其质量略低-
但不会阻塞。通常,不需要高级或长期加密的应用程序可以/dev/urandom可靠地使用。

尝试稍等片刻,然后重新阅读/dev/urandom。您可能已经耗尽了内部熵池读取的太多信息/dev/random,从而破坏了两个生成器-
允许您的系统创建更多的熵可以补充它们。

有关和的更多信息,请参见Wikipedia/dev/random``/dev/urandom

2020-06-02