시스템 시작 파일 / 쉘 시작 스크립트에는 ulimit 구성이 없습니다.
ulimit -a
보여줍니다 :
-u: processes 1064
-n: file descriptors 256
launchctl limit
보여줍니다 :
maxproc 2048 2048
maxfiles 2048 2048
launchctl의 한계가 쉘의 ulimit 출력과 일치해야한다는 것을 모호하게 기억합니다. 잘못 될 수 있습니다.
lauchctl의 한계와 ulimit 사이에 어떤 관계가 있습니까?
답변
쉘에서 ulimit는 “쉘과 쉘이 시작한 프로세스에 사용 가능한 자원에 대한 제어”를 제공합니다 (참조 man bash
). 따라서 쉘과 해당 하위 항목에만 적용됩니다. 실행 한도는 해당 제한 및 관리 프로세스와 관련이 있습니다. 둘은 별개입니다.
개별 프로그램은 표준 C 라이브러리 루틴을 호출하여 자신의 자원 제한을 설정할 수 있습니다 ulimit()
또는 getrlimit()
과 setrlimit()
. 프로세스가 수퍼 유저로 실행되고 있지 않으면 특정 리소스 제한을 높일 수 없습니다.
실용적인 예로서, 나는 큰 소프트웨어 프로젝트를 디버깅하고 열려있는 파일 수에 대한 쉘의 기본 제한은 충분하지 않습니다. 내 .bashrc 파일에는 다음이 있습니다.
# Increase the upper limit on the number of open files:
ulimit -n 1024
이제 내 디버거는 필요한 모든 파일을 열 수 없다고 불평하지 않습니다. 분명히 이것은 발사에 영향을 미치지 않아야합니다.