太多打开的文件 – 如何找到罪魁祸首

运行tail -f filename ,我收到以下消息:

 tail: inotify cannot be used, reverting to polling: Too many open files 

这是一个潜在的问题吗?

如何诊断对所有打开文件负责的内容? 我有一个可疑进程列表,但如果它们不会成为罪魁祸首,那些不依赖于知道要检查哪个进程的指令将是有用的。

您可以使用lsof来了解谁打开了这么多文件。 通常它是一个打开如此多文件的(Web)服务器,但lsof肯定会帮助您确定原因。

一旦你明白谁是坏人你就可以

如果来自lsof的输出非常大,请尝试将其重定向到文件,然后打开该文件

示例(您可能必须按Ctrl + C第一个命令)

 lsof > ~/Desktop/lsof.log cat ~/Desktop/lsof.log | awk '{ print $2 " " $1; }' | sort -rn | uniq -c | sort -rn | head -20 vim ~/Desktop/lsof.log 

万一其他人需要它……

 ulimit -a 

将显示所有当前限制。 特别是ulimit -n 70000将设置文件描述符限制。

也…

 cat /proc/sys/fs/file-max 

如果编辑,将显示/设置内核限制。

 sudo echo 200000 > /proc/sys/fs/file-max 

更详细的解释可以在…找到

如何增加非root用户的打开文件限制?