/etc/security/limits.conf가 편집되거나 변경되지 않은 경우 주석만 남게 됩니다. 그러나 'cat /proc/self/limits'는 몇 가지 유효한 제한이 있음을 보여줍니다. 이것들이 커널로 컴파일되었습니까? 그렇지 않은 경우 시스템은 수정되지 않은 환경에서 초기 기본 제한을 어디에서 얻습니까?
[~]$ cat /proc/self/limits
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 10485760 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 1024 60413 processes
Max open files 1024 4096 files
Max locked memory 65536 65536 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 60413 60413 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
답변1
아마도 가장 많이 투표된 답변을 확인해야 할 것입니다. ServerFault SE기본 ulimit 값은 어디에 설정되어 있나요? (리눅스, 센토스) .
고쳐 쓰다: 권장되는 대로 다른 사이트의 정보를 복사하여 붙여넣으세요.
이러한 "기본" 제한은 다음과 같이 적용됩니다.
- 이것리눅스 커널존재하다부팅 시간(
init
프로세스용), - 유산, 상위 프로세스의 제한사항(때때로
fork(2)
), - 폴리아크릴아미드 사용자 세션이 열릴 때(커널/상속된 값은 대체 가능),
- 이것프로세스자체(PAM 및 커널/상속된 값을 대체할 수 있음, 참조
setrlimit(2)
)
일반 사용자 프로세스는 하드 제한을 늘릴 수 없습니다.
리눅스 커널
시작 시 Linux는 init
프로세스에 대한 기본 제한을 설정하며, 이 제한은 다른 모든(자식) 프로세스에 상속됩니다. 이 한도를 보려면: grep process /proc/1/limits
.
예를 들어, 커널의 기본값은최대 파일 설명자 수( ulimit -n
)는 1024/1024(소프트, 하드)이며,제안되었습니다리눅스 2.6.39에서는 1024/4096.
기본최대 프로세스 수당신 말이 맞아요제한된에 대한:
Total RAM in kB / 128
x86 아키텍처의 경우 (적어도) 배포판에서 기본 커널 값을 변경하는 경우가 있으므로커널 소스 코드를 확인하세요을 위한 kernel/fork.c
, fork_init()
. "프로세스 수" 제한을 RLIMIT_NPROC라고 합니다.
폴리아크릴아미드
일반적으로 로그인 시 사용자 인증을 보장하기 위해 PAM은 일부 모듈과 함께 사용됩니다(참고자료 참조 /etc/pam.d/login
).
데비안에서 제한 설정을 담당하는 PAM 모듈은 다음 위치에 있습니다 /lib/security/pam_limits.so
.
라이브러리는 limits.conf
및 에서 해당 구성을 읽 습니다 limits.d/*.conf
. 그러나 이러한 파일이 비어 있더라도pam_limits.so는 하드코딩된 값을 사용할 수 있습니다.소스코드에서 확인하실 수 있습니다.
예를 들어 데비안에서는 라이브러리패치됨이렇게 하면 기본적으로최대 프로세스 수( nproc
)는 무한하며,최대 파일 수( nofile
)는 1024/1024입니다:
case RLIMIT_NOFILE: pl->limits[i].limit.rlim_cur = 1024; pl->limits[i].limit.rlim_max = 1024;
그래서,CentOS PAM 모듈 소스 코드 확인(RLIMIT_NPROC를 찾으세요).
그러나 많은 프로세스가 PAM을 거치지 않는다는 점에 유의하세요(대개 데몬이나 cron 작업과 같이 로그인한 사용자가 시작하지 않은 경우).