我正在寻找我怀疑不存在的东西:一个非阻塞的缓冲命名管道(fifo),可从命令行使用。有这样的事吗?
这是用例:假设我有一个进程将在后台长时间运行,并向吐出大量输出stdout
。我不是很在意输出,也不想存储它(也许我没有足够的空间),但是我想定期“插入”并跟踪其操作,然后再次退出并留给它做它的工作。因此,我想将其输出重定向到此理论上经过缓冲的,无阻塞的命名管道,然后定期使用它。
所以基本上我想这样开始(10M
即缓冲区的大小):
mkmagicfifo magicfifo 10M
spewingprocess > magicfifo &
...并定期进去看看发生了什么...
tail -f magicfifo
... 而不 magicfifo
存储所有输出(因此,不是普通文件),也没有在输出被填满且未被点击时阻止喷出过程(因此,不是很普通的命名管道)。
我不认为涉及tail
或prune
将要解决的解决方案(好吧,我可以考虑解决一个涉及的问题tail
),因为tail
仍然需要将所有数据存储在某个地方(如果我想插手或放弃查看),并且prune
必须重写文件,大概(我承认我没有尝试/证明过)破坏了生成所有输出的过程的重定向。
我希望我可以写一些实用程序来做到这一点,但是* nix有 在文件和管道方面很多很棒的方面,我只是忍不住认为它存在并且我只是不知道。
那么:有这样的事情吗?