是否存在任何已建立的工具,可以让管道溢出到磁盘而不是阻塞上游进程?
举例来说,在传统管道 A | B 中,当 B 不从标准输入读取时,我们会得到以下行为:
- A 发出输出,直到 stdout 填满
- 然后 A 被阻塞,直到 B 从 stdin 读取
我希望有以下行为:
- A 发出输出,直到其 stdout 缓冲区填满
- A 的进一步输出被写入磁盘缓存文件,因此 A 不会被阻塞
- 当 B 从 stdin 获取数据时,磁盘缓存文件中的新数据将被读取(FIFO)到缓冲区中
是否存在任何现有的工具可以实现这一点?
谢谢你!
使用
mbuffer
实用程序:这将导致
mbuffer
使用内存映射文件(-t
选项)来缓冲输出的可能大量的数据(producer
如果consumer
无法足够快地读取)。内存映射文件的大小将限制为 10 GB(如果该文件已满,mbuffer
将像往常一样阻塞)。