我最近创建了一个测试文件,因为我想玩弄 logrotate。我正在寻找一种解决方案来创建我想要的任何大小的文件。我发现这是我的解决方案:
dd if=/dev/zero of=/path bs=1M count=30 status=progress
Run Code Online (Sandbox Code Playgroud)
我也发现了这个:
dd if=/dev/urandom of=/path bs=1M count=30 status=progress
Run Code Online (Sandbox Code Playgroud)
第一个示例创建一个带有零的文件,第二个带有随机文本的文件。这两个文件的大小相同,均为 30M。
谁能解释一下,为什么用随机文本创建这个文件比用零创建这个文件需要更长的时间?因为它们都有相同大小的数据......
提前致谢 :)
从输出中可以看出,这两种方法都非常快。但是,数据来源之间存在明显差异。
/dev/zero 是一个伪文件,它只是生成一个零流,这是一项相当简单的任务/dev/urandom实际上访问内核的熵池以生成随机数,因此比简单地生成相同的固定值具有更多的 I/O 和进程调用开销/dev/zero。这就是为什么从 读取/dev/urandom永远不会像从 读取一样快的原因/dev/zero。如果您有兴趣,维基百科上的文章/dev/random可以作为进一步阅读的起点。