You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

paste命令重定向周期性输入无输出:原因排查与解决方法

问题原因与修复方案

为什么代码无输出?

paste 命令默认对管道输入使用全缓冲机制:它会把输入数据暂存到缓冲区,直到缓冲区被填满(通常是几千字节)才会一次性输出内容。你的循环每秒只输出一行"test",远达不到缓冲区的触发阈值,所以内容一直被卡在缓冲区里,看不到输出。

而换成 cat 能正常工作,是因为 cat 对管道输入默认使用行缓冲,每收到一行就立刻输出;把 sleep 1 改成 sleep 0 时,输出速度极快,瞬间填满缓冲区,paste 就会一次性吐出所有内容。

修复方法

使用 stdbuf 命令强制 paste 采用行缓冲模式,这样每收到一行就会立即输出:

stdbuf -oL paste <(while :; do echo "test"; sleep 1; done) | cat
  • -oL 参数表示将标准输出设置为行缓冲。

如果需要合并多个类似的周期性输出,只需要在 paste 后添加更多进程替换的输入即可,比如:

stdbuf -oL paste <(while :; do echo "test1"; sleep 1; done) <(while :; do echo "test2"; sleep 2; done) | cat

内容的提问来源于stack exchange,提问作者vbstb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 14:33:38