我突然遇到了一个问题;我所有的应用程序和服务器都运行良好,突然间我看到打开的文件数量猛增。
我正在用这个命令检查它:
cat /proc/sys/fs/file-nr
Run Code Online (Sandbox Code Playgroud)
当我检查它时44544 0 128000
,它显示,所以 44544 是打开文件的数量。
但是当我检查这个命令时 -lsof | wc -l
它显示 - 28384。
那么哪个是正确的呢?
我的最大打开文件限制是 65535
ulimit -a
open files (-n) 65535
Run Code Online (Sandbox Code Playgroud)
我想知道使用更多打开文件的前 5 个进程。我可以从中得到这个,lsof
但这里显示的计数与我上面提到的其他命令有很大不同。
我可以获得此命令计数的进程的详细信息cat /proc/sys/fs/file-nr
吗?
根据下面提到的链接,它说我们不能, 如何显示打开的文件描述符但不使用 lsof 命令
有没有适合我的工作?我需要找到哪个进程突然开始使用更多打开的文件。
更新 抱歉各位麻烦。我发现我正在做的错误是我没有从 root 中检查 lsof|wc -l。这就是我看到巨大差异的原因。
file -nr 和 lsof 的输出之间仍然存在差异 | wc -l(从根)。lsof 计数大于文件 -nr 计数。这样做的原因是,文件 -nr 忽略了一些目录(被 lsof 视为文件)我通过对谷歌本身的一些研究发现了这个原因。无论如何!感谢大家的帮助!