如果我做了
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;
}