limits.conf 값이 프로세스별로 적용됩니까? /etc/security/limits.conf위해 가치를 조정하고 있으며

오라클 사용자 nofile/etc/security/limits.conf위해 가치를 조정하고 있으며 그 동작에 대한 질문 nofile이 있습니다. 사용자가 모든 프로세스에서 열 수 있는 총 파일 수를 제한하거나 사용자가 가질 수있는 총 파일 수를 제한합니까 프로세스 마다 열려 있습니까?

특히 다음 사용법의 경우 :

oracle                  hard    nofile                  65536



답변

대부분의 limits.conf값 ¹ 은 ulimit쉘 명령이나 setrlimit시스템 호출 로 설정할 수있는 한계입니다 . 그것들은 프로세스의 속성입니다. 한도는 각 프로세스에 대해 독립적으로 적용됩니다. 특히 각 프로세스는 nofile파일 을 열 수 있습니다. 사용자 프로세스에 의해 누적 된 열린 파일 수에는 제한이 없습니다.

nproc제한은 사용자의 모든 프로세스를 합산한다는 점에서 특별한 경우입니다. 그럼에도 불구하고 여전히 프로세스별로 적용됩니다. 프로세스가 fork새 프로세스를 작성하기 위해 호출 할 때 프로세스의 euid에 속하는 프로세스 수가 프로세스 RLIMIT_NPROC값 보다 크면 호출이 거부됩니다 .

limits.conf매뉴얼 페이지에는 한계가 세션에 적용한다고 설명한다. 즉, 세션의 모든 프로세스는 이러한 프로세스 중 하나에 의해 변경되지 않는 한 모두 동일한 한계를 갖습니다. 그것은 세션의 프로세스에 대해 어떤 합계가 이루어 졌다는 것을 의미하지는 않습니다 (운영 체제가 추적하는 것조차 아닙니다. 세션 개념이 있지만 그보다 세분화되어 있습니다. 예를 들어 각 X11 응용 프로그램은 종료되는 경향이 있습니다) 자체 세션에서). 작동하는 방식은 로그인 프로세스가 자체적으로 제한을 설정하고 모든 하위 프로세스에서 상속한다는 것입니다.

¹ 예외는 maxlogins, maxsysloginschroot거부 로그인 프로세스의 일부 또는 영향 로그인으로 적용되는.


답변