给定表单的bash命令行
commandA | commandB
Run Code Online (Sandbox Code Playgroud)
我想添加一个大小约为1MB的缓冲区,位于commandA和之间commandB.我希望能够以某种形式做到这一点
commandA | BUFFER | commandB
Run Code Online (Sandbox Code Playgroud)
但是用于什么命令BUFFER?
备注:我想这样做是为了解耦这两个命令以使它们更好地并行化.问题在于commandB处理大块的数据,这意味着commandA块直到commandB用块完成.所以一切顺序运行:-(
Eug*_*eck 26
BUFFER称为缓冲区.(man 1缓冲区,也许是在apt-get安装缓冲区之后)
Joh*_*rer 14
还有另一个工具,pv- 管道查看器:
process1 | pv -pterbTCB 1G | process2
Run Code Online (Sandbox Code Playgroud)
B 指定缓冲区大小,此处为1 GigibyteC禁用splice,这是必需的BT 显示缓冲级别pterb 是由于存在而需要的默认显示开关 Tpv可能在mbuffer/buffer不在官方存储库(例如arch linux)中的系统上可用.
您可以使用
例如
process1 | mbuffer -m 1024M | process2
Run Code Online (Sandbox Code Playgroud)
使用1G缓冲区