我正在阅读的文件之一似乎存在病态情况less
。该文件大小约为 300MB,磁盘速度很快(本地 NMVE),并且该文件可以轻松地放入内存中,没有交换或类似的情况。
less --version
给我
less 563 (PCRE regular expressions)
在 Arch Linux 上。我在没有命令行参数的情况下运行( no-R
或-S
)。我正在读取的文件正在被写入。
用法:
我注意到使用follow
(按F
)对于此文件来说通常很慢,但可行。如果follow
在进行过程中激活搜索(用于突出显示),事情会变得更糟。现在,如果我搜索以下内容:(something|something-else).*|.*warn
然后点击F (follow)
,它就会完全停止。我需要从另一个终端杀死它。
我一直在使用这样的正则表达式来处理更大的文件,没有任何问题。会不会出了什么问题?
编辑:更准确的步骤和信息:
- 发生在 50MB 文件中,无需长行
- 另一个进程每 15 秒向文件添加一次内容
脚步:
- 我打开文件,转到末尾(Shift+g)
- 搜索
(something|something-else).*|.*warn
(Pattern not found
在最后说) - follow (Shift+f) -> CPU 达到 100% 并且似乎永远不会停止
- 如果我在搜索后按向上箭头,而不是按 Shift+f,也会发生同样的情况
- 如果我将正则表达式减少到其一部分(
(something|something-else).*
或者.*warn
操作需要几秒钟,仍然很慢但可以管理 - htop中常驻内存显示为400MB
- Ctrl+C 无法中断它,需要从外部杀死