![cat 和 grep 处理一个巨大的文件 - 管道破裂](https://linux22.com/image/1558510/cat%20%E5%92%8C%20grep%20%E5%A4%84%E7%90%86%E4%B8%80%E4%B8%AA%E5%B7%A8%E5%A4%A7%E7%9A%84%E6%96%87%E4%BB%B6%20-%20%E7%AE%A1%E9%81%93%E7%A0%B4%E8%A3%82.png)
我正在尝试 cat 和 grep 一个 40 GB 的大文件。输出一些结果后,我的进程被终止了。
知道问题可能出在哪里吗?使用 OSX
[1] 37392 broken pipe cat output.txt |
37393 killed grep --color=auto -C 20 201804090004054066628236
我可以确认这是由于grep
内存使用量造成的。它的内存使用量猛增至近 100 GB
答案1
看起来cat
报告了管道损坏,因为grep
被杀死了。如果进程消耗了太多内存,并且触发了 OOM(内存不足)杀手,通常会发生这种情况。您可以尝试不使用无用cat
:
grep --color=auto -C 20 201804090004054066628236 output.txt