ulimit nofiles 和 lsof

Hay*_*ves 6 linux ulimit

如果我做一个

lsof | grep user | wc -l
Run Code Online (Sandbox Code Playgroud)

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

如果我检查

ulimit -a 用户

nofiles 设置为 1024。

有人可以帮助我更好地了解打开文件的数量设置吗?显然情况并非如此,但我认为 1024 的硬文件意味着用户不能打开超过 1024 个文件。

Kri*_*sen 4

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;
}
Run Code Online (Sandbox Code Playgroud)