ulimit nofiles 和 lsof

ulimit nofiles 和 lsof

如果我做了

lsof | grep user | wc -l

我得到一个在 25,000 范围内的数字。

如果我检查

ulimit -a 用户

nofiles 设置为 1024。

有人能帮我更好地理解打开文件数设置吗?显然事实并非如此,但我认为 1024 的硬无文件数意味着用户不能打开超过 1024 个文件。

答案1

ulimit 返回的文件限制是单个进程可以打开的文件数(ulimit -n 仅显示描述符数)。返回的值是 RLIMIT_NOFILE(或 man getrlimit),在 man ulimit 中有说明。这个小应用程序将输出相同的值(1024):

#include <stdio.h>
#include <sys/time.h>
#include <sys/resource.h>

int main(){
    struct rlimit info;
    getrlimit(RLIMIT_NOFILE, &info);
    printf("%d\n", info.rlim_cur);
    return 0;
}

答案2

你可能计算了很多重复文件。尝试

lsof -u <user> | grep "/" |sort -k9 -u | wc

这应该会过滤掉一些非文件描述符和重复的文件条目。我从服务器故障

相关内容