답변:
대부분의 limits.conf
값 ¹ 은 ulimit
쉘 명령이나 setrlimit
시스템 호출 로 설정할 수있는 한계입니다 . 그것들은 프로세스의 속성입니다. 한도는 각 프로세스에 대해 독립적으로 적용됩니다. 특히 각 프로세스는 nofile
파일 을 열 수 있습니다. 사용자 프로세스에 의해 누적 된 열린 파일 수에는 제한이 없습니다.
이 nproc
제한은 사용자의 모든 프로세스를 합산한다는 점에서 특별한 경우입니다. 그럼에도 불구하고 여전히 프로세스별로 적용됩니다. 프로세스가 fork
새 프로세스를 작성하기 위해 호출 할 때 프로세스의 euid에 속하는 프로세스 수가 프로세스 RLIMIT_NPROC
값 보다 크면 호출이 거부됩니다 .
limits.conf
매뉴얼 페이지에는 한계가 세션에 적용한다고 설명한다. 즉, 세션의 모든 프로세스는 이러한 프로세스 중 하나에 의해 변경되지 않는 한 모두 동일한 한계를 갖습니다. 그것은 세션의 프로세스에 대해 어떤 합계가 이루어 졌다는 것을 의미하지는 않습니다 (운영 체제가 추적하는 것조차 아닙니다. 세션 개념이 있지만 그보다 세분화되어 있습니다. 예를 들어 각 X11 응용 프로그램은 종료되는 경향이 있습니다) 자체 세션에서). 작동하는 방식은 로그인 프로세스가 자체적으로 제한을 설정하고 모든 하위 프로세스에서 상속한다는 것입니다.
¹ 예외는 maxlogins
, maxsyslogins
및 chroot
거부 로그인 프로세스의 일부 또는 영향 로그인으로 적용되는.
limit.conf
세션이 열린 시간 사이에 변경되었거나 다른 한계 (루트를 제외하고 더 작아야 함)가에 설정된 경우 .profile
.
prlimit --pid $pid
각각에서 실행 하는 경우 활성 세션의 한계를 효과적으로 변경할 수 있습니다. 반복하는 동안 일부 프로세스가 중단되는 경우 몇 번 수행해야 할 수도 있습니다.
RLIMIT_NPROC
에서 2로 , B에서 3으로 설정 했다고 가정합니다 . 그러면 B는 하나 이상의 프로세스를 분기 할 수 있지만 A는 할 수 없습니다.