为何root所使用的打开文件描述符的数量(或如何)超过ulimit -n?
我们的服务器最近用尽了文件描述符,对此我有些疑问。ulimit -n应该给我最大数量的打开文件描述符。这个数字是1024。我通过运行检查了打开文件描述符的数目,lsof -u root |wc -l得到了2500 fds。那远比1024多得多,所以我猜想那意味着1024是每个进程而不是每个用户的数量。好吧,我跑到lsof -p$PidOfGlassfish|wc -l了1300点。这是我没有得到的部分。如果ulimit -n不是每个用户或每个进程的最大进程数,那有什么用?不适用于root用户吗?如果是这样,那么我该如何获取有关文件描述符用尽的错误消息? 编辑:我唯一能理解的方法ulimit -n是,如果它应用打开文件的数量(如bash手册中所述),而不是文件句柄的数量(不同的进程可以打开同一文件)。如果是这种情况,那么仅列出打开文件的数量(在“ /”上增加,从而排除内存映射文件)是不够的: lsof -u root |grep /|sort -k9 |wc -l #prints '1738' 要实际查看打开文件的数量,我需要仅在打印唯一条目时对名称列进行过滤。因此,以下可能更正确: lsof -u root |grep /|sort -k9 -u |wc -l #prints '604' 上面的命令期望lsof以以下格式输出: java 32008 root mem REG 8,2 11942368 72721 /usr/lib64/locale/locale-archive vmtoolsd 4764 root mem REG …