gpt4 book ai didi

bash - 当文件系统跟不上 bash 重定向的输出时会发生什么?

转载 作者:行者123 更新时间:2023-11-29 09:34:49 26 4
gpt4 key购买 nike

假设我有一些生成输出的进程my_proc。我在 bash 中使用 > 将该输出重定向到一个文件,如下所示:


./my_proc >/一些/文件

当文件系统无法跟上 my_proc 的输出时会发生什么(即 my_proc 生成输出的速度快于写入磁盘的速度)?我假设文件系统会做一些缓冲,但如果它永远赶不上怎么办?

有没有办法配置最大缓冲区大小?

对我来说,最佳解决方案是在缓冲区溢出时开始丢弃输出(开始重定向到 /dev/null 或其他内容)。有没有一种简单的方法可以用 bash 做到这一点?

最佳答案

只要文件系统 catch ,您的应用写入调用就会延迟。最有可能的最终效果是您的应用在等待文件系统时运行速度变慢。

写入调用通常由 OS IO 子系统缓冲,除非使用适当的标志打开目标文件。但是标准输出不是这种情况。可以使用适当的选项安装文件系统以禁用缓冲(即同步模式),这将避免缓冲,但出于性能原因通常不会这样做。

要获得您想要的结果,您需要对您的应用程序进行编程以缓冲输出并在它检测到文件系统正在减慢您的速度时丢弃缓冲区。但这是没有意义的。如果您需要输出,则需要等待。如果不需要,那么一开始就不要写。

关于bash - 当文件系统跟不上 bash 重定向的输出时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19668127/

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