수정되지 않은 환경에 설정된 제한

수정되지 않은 환경에 설정된 제한

/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 작업과 같이 로그인한 사용자가 시작하지 않은 경우).

관련 정보