gpt4 book ai didi

unix 管道正在流式传输?

转载 作者:行者123 更新时间:2023-12-04 02:04:34 32 4
gpt4 key购买 nike

zcat big.txt.gz | split -l 1000000 - 前缀

其中 big.txt.gz 是 150 GB,假设它有大约 10 亿行。

在这种情况下,是 unix 管道将数据“流”到 split 中,还是完成了 zcat 操作,然后再执行 split

我不清楚 other pages如果上述命令会崩溃,因为它无法在执行拆分之前将所有压缩数据保存在管道缓冲区中,或者如果压缩数据将“流”到 split 中。

一般来说,unix pipe 的流行为是不清楚的 - pipe 什么时候等待直到所有先前的操作完成才将输入输入到下一个命令 stdin?

例如,如果我再链接几个命令,它会不会因为内存不足而崩溃?例如

zcat big.txt.gz | tr 'a' 'b' | sed 's/foo/bar/g' | grep '你好'

最佳答案

A pipe has a limited capacity. [...] Applications should not rely on a particular capacity: an application should be designed so that a reading process consumes data as soon as it is available, so that a writing process does not remain blocked.

我不确定为什么这里有任何疑问:进程同时运行,并且上游进程正在写入下游进程正在读取。或者至少这是本手册页特别要求的理想情况。

现在,给定的命令可能会在执行任何操作之前尝试吸收所有输入,而输入太大可能会导致 该命令 崩溃。但这与管道缓冲区溢出非常不同。

关于unix 管道正在流式传输?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44418681/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com