Solaris의 /etc/system, /etc/sysctl.conf 및 /etc/security/limits.conf의 파일 설명자 제한

Solaris의 /etc/system, /etc/sysctl.conf 및 /etc/security/limits.conf의 파일 설명자 제한

먼저 제가 이해한 내용을 설명하겠습니다.

Solaris 10에서는 하드 rlim_fd_max및 소프트 제한이 시스템 수준 rlim_fd_cur에서 /etc/system설정됩니다 .

그리고 /etc/security/limits.conf한도를 설정하세요 login. 그렇죠? 따라서 사용자에게는 이 값이 무시됩니다 /etc/system. 에 제한이 설정되어 있지 않으면 /etc/security/limits.conf사용자는 에서 값을 얻게 됩니다 /etc/system. 그렇죠?

그렇다면 /etc/sysctl.conf이것은 무엇을 위한 것입니까?

sysctl.conf내 Solaris 10에는 , 또는 가 없습니다 limits.conf. 이 경우 재부팅 후에도 유지되는 개별 사용자에 대한 제한을 어떻게 설정합니까? 설정 외에 다른 메커니즘이 있습니까 profile?

답변1

rlim_fd_curin 과 함께 매개변수를 사용하는 것은 Solaris 10 이상에서 더 이상 권장되지 않습니다 rlim_fd_max. System V 프로세스 간 통신 대신 /etc/system리소스 제어를 사용해야 합니다 . process.max-file-descriptor장점은 더 이상 서버를 다시 시작할 필요가 없다는 것입니다.프로젝트다른 프로세스에는 영향을 주지 않습니다.

그런 다음 프로젝트의 하드 제한을 변경하려면 user.root다음과 같이 권한 수준 priv(하드 제한)도 설정해야 합니다.

# projmod -s -K "process.max-file-descriptor=(priv,4096,deny)" user.root

프로젝트의 소프트 제한을 변경하려면 user.other권한 수준도 설정해야 합니다. 예:

$ projmod -s -K "process.max-file-descriptor=(basic,1024,deny)" user.other

프로젝트는 파일에서 찾을 수 있습니다 /etc/project.

projaddprojmod다음은 (생성) 및 (설정)의 예 입니다 .

# useradd test
# projadd -c "Test" 'user.test'
# projmod -s -K "project.max-shm-memory=(privileged,6GB,deny)" 'user.test'
# projmod -s -K "process.max-file-descriptor=(basic,1024,deny)" user.test
# cat /etc/project|grep -i test
user.test:101:Test:::process.max-file-descriptor=(basic,1024,deny);project.max-shm-memory=(privileged,6442450944,deny)
#

projadd그리고 projmod지속적인 가치가 있습니다. 비지속적 값의 경우 prctl명령을 사용해야 합니다.

예:

# prctl -n project.max-shm-memory -v 8gb -r -i project default 
# prctl -n project.max-shm-memory -i project default 
project: 3: default 
NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT 
project.max-shm-memory 
usage 8.49MB 
privileged 8.00GB - deny - 
system 16.0EB max deny - 

/etc/security/limits.conf/etc/sysctl.confLinux 파일입니다 .

limits.confPAM 모듈의 사용자 세션에서 시스템 리소스 제한을 설정합니다 pam_limits. --> 와 관련이 있습니다 projmod.

sysctl.confsysctl런타임 중에 커널 매개변수를 수정하는 파일입니다. --> 이것은 수정과 관련이 있습니다 /etc/system.

사용자에게 제한이 없으면 limits.conf기본값은 다음에서 가져옵니다. 커널: init프로세스 상속됨: 상위 프로세스(제조업체에서 구성 /usr/lib/sysctl.d/) PAM: limits.conf(커널 및 상속됨 대체 가능) 프로세스 자체(PAM, 커널 및 상속됨 대체 가능, " getrlimit, setrlimit, prlimit- 리소스 제한 가져오기/설정").

limits.conf그리고 변화는 sysctl.conf지속됩니다.

개별 사용자에 대한 제한을 설정하려면 limits.conf파일을 편집해야 합니다. 좋다:

{account} soft as size (KB)
{account} hard as size (KB)

예:

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

limit.conf를 수정하면 재부팅이 필요하지 않지만 새 매개변수는 새 세션에만 적용됩니다.

실행 중인 프로세스를 수정하려면 prlimit다음과 같이 사용해야 합니다.

prlimit --pid <pid> --<limit>=<soft>:<hard>

예:

prlimit --pid 12345 --nofile=1024:2048

관련 정보