“cat / dev / random”与“tail -f / dev / random”

时间:2016-02-26 18:09:16

标签: linux shell unix random tail

声明

cat /dev/random

按预期继续产生输出,但

tail -f /dev/random

挂起(至少在OSX和SUSE上)。 为什么后面的陈述会挂起?

1 个答案:

答案 0 :(得分:9)

tail -f做了几件事:

  1. 查找流的结尾,通过阅读直到达到EOF或搜索到最后(/dev/random上没有的操作)。
  2. 备份一定长度(可能通过保留最近读取的适当长度内容的缓冲区,可能通​​过在初始扫描期间保留最后N行的搜索位置列表,或通过其他方式),并打印该点与结束之间的内容。
  3. 继续打印新内容,因为此类内容可用。
  4. 如果没有结束 - 就像/dev/random的情况一样 - 第一步永远不会完成。

    cat不需要找到一个从中寻找回头的结局,因此它没有相关的失败点。