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