less 命令内存不足

Rum*_*mca 4 less gnu

在大文件中搜索字符串(无正则表达式等)less filenameless -b 1 filename退出或打印时,它无法分配内存。top显示在死掉之前(1 秒间隔),内存使用量减少了大约 5%。

我还可以使用什么其他工具来支持大文件?该文件只有 100 MB 的日志。

$ less -V
less 458 (GNU regular expressions)
Copyright (C) 1984-2012 Mark Nudelman
Run Code Online (Sandbox Code Playgroud)

操作系统详细信息:

$ ulimit -a
-t: cpu time (seconds)              unlimited
-f: file size (blocks)              unlimited
-d: data seg size (kbytes)          unlimited
-s: stack size (kbytes)             8192
-c: core file size (blocks)         0
-m: resident set size (kbytes)      unlimited
-u: processes                       15988
-n: file descriptors                1024
-l: locked-in-memory size (kbytes)  64
-v: address space (kbytes)          2048000
-x: file locks                      unlimited
-i: pending signals                 15988
-q: bytes in POSIX msg queues       819200
-e: max nice                        0
-r: max rt priority                 0
-N 15:                              unlimited
$ cat /etc/*rele*
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=13.10
Run Code Online (Sandbox Code Playgroud)

ter*_*don 5

这可能与您的内存无关,而与less编写方式以及为其内部变量分配了多少空间有关。

无论如何,less确实不是为此设计的,您应该使用类似的工具grep

grep yourQuery file
Run Code Online (Sandbox Code Playgroud)

如果您想查看查询周围的行(例如 5 行),请运行以下命令:

grep -C 5 yourQuery file
Run Code Online (Sandbox Code Playgroud)

如果您有太多匹配项,您可以将输出传递给less,现在您应该能够搜索它:

grep -C 5 yourQuery file | less
Run Code Online (Sandbox Code Playgroud)

当然,如果您想手动执行此操作,可以在文本编辑器中打开该文件。任何认真的编辑器(例如vim或 )emacs都能够打开并搜索 100MB 的文件。