【问题标题】:Grep resource usageGrep 资源使用情况
【发布时间】:2017-10-12 18:56:38
【问题描述】:

我的任务是编写一个 shell 脚本来 grep 遍历 Linux 和 Solaris 服务器上许多目录中的数百个日志文件。一些日志以多种格式压缩,一些日志大小为几 GB。我担心 grep 会在服务器上使用大量资源,并且可能会通过耗尽内存来关闭机器上运行的 Web 服务器(如果这种情况可能发生的话)。

我应该解压缩文件,grep 它们然后再次压缩它们还是使用 zgrep(或等效)在压缩时搜索它们?使用一种方法比另一种方法更具有资源优势吗?

另外,有没有一种简单的方法可以将命令的内存使用限制为当前可用内存的百分比?

如果有人能解释运行这些命令时内存使用的工作原理,那将大有帮助。

【问题讨论】:

    标签: linux bash memory grep zgrep


    【解决方案1】:

    grep 内存使用是恒定的;它不随文件大小而缩放。它不需要将整个文件保存在内存中,只需要它正在搜索的区域。

    解压类似。内存使用量与字典大小成正比,而不是与总文件大小成正比。字典大小无需担心:最多几兆字节。

    我不会担心一些简单的 grep / zgrep / zcat | grep 搜索会影响其他进程。这些东西是 Linux 的生计。


    † 不过,请注意扫描 files with incredibly long lines。它的内存使用量确实随行长而变化。您可以使用grep -I 跳过二进制文件,这通常就足够了。

    【讨论】:

    • 也不要使用-f 指定一个巨大的模式文件。可能不会有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-25
    • 1970-01-01
    • 2021-08-18
    • 1970-01-01
    • 2015-10-21
    • 1970-01-01
    相关资源
    最近更新 更多