排序时数据如何在linux中流经管道?

排序时数据如何在linux中流经管道?

假设我做了类似的事情

cat afile [ | possibly awk or similar to process the file] | sort

我知道数据流是这样的

afile -- stdout -- os buffer -- stdin -- sort 

当尺寸afile较小时,也许sort可以获取全部内容并对其进行排序。

然而,当文件很大时,数据必须以块的形式流动。
我知道管道进程是并发运行的,因此 sort 可能会接收数据并将它们迭代地存储在某个地方。

sort在排序之前是否等待接收所有数据?
可能将它们写入文件。
然后处理这些文件?

我想这个问题可以应用于其他命令,而不是sort需要整个数据才能操作。
(当linux命令通过管道接收大数据并且必须获取整个数据才能执行时,它如何运行?但是这可能是一个太笼统的问题了..)

相关内容