ulimit的限制是每个唯一用户。因此,user1,无论登录多少次或正在运行的进程如何,都将被限制为1024。
我不确定我是否完全理解该句子的含义(英语不是我的母语)。如果该句子意味着文件描述符的ulimit配置不是每个进程的限制,那么可接受的答案(AFAIK)是错误的。
我的意思是,如果某些用户启动了4个进程,并且FD的ulimit配置为1024,则每个进程可能会打开1024个FD。该用户将不仅限于1024个FD,而是由该用户启动的进程。
例如:
me@superme:~$ ulimit -n
1024
me@superme:~$ lsof | grep $USER | wc -l
8145
在下面的perl示例中,我们达到了极限(这是每个进程的极限):
#!/usr/bin/perl
$count = 0;
@filedescriptors;
while ($count <= 1024) {
$FILE = ${count};
open $FILE, ">", "/tmp/example$count" or die "\n\n FDs: $count $!";
push(@filedescriptors, $FILE);
$count ++;
}
结果:
FDs: 1021 Too many open files at ./test.pl line 8.
1021因为在到达while循环之前有3个打开的文件描述符(stdout,stdin和stderr)
抱歉,如果我完全错了,或者我误解了答案。