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
다음은 한계에 도달하는 펄 예제입니다 (프로세스 당 한계입니다).
#!/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.
while 루프 (stdout, stdin 및 stderr)에 도달하기 전에 3 개의 열린 파일 디스크립터가 있었기 때문에 1021
내가 완전히 틀렸거나 답을 잘못 이해하면 죄송합니다.