
OS X 10.7.1에서 성가신 "시스템에 열린 파일이 너무 많습니다" 제한을 제거해야 합니다.
방법이 있나요?
답변1
에 따르면이 유용한 기사(읽기를 추천합니다):
기본적으로 Mac OS X에서 열 수 있는 최대 파일 수는 12,288개로 설정되어 있으며 특정 프로세스에서 열 수 있는 최대 파일 수는 10,240개입니다.
다음을 통해 이를 확인할 수 있습니다.
sysctl kern.maxfiles
sysctl kern.maxfilesperproc
다음을 사용하여 한도를 늘릴 수 있습니다(위험은 본인 부담).
sysctl -w kern.maxfiles=20480
(또는 원하는 번호 선택)sysctl -w kern.maxfilesperproc=18000
(또는 원하는 번호 선택)
변경 사항을 영구적으로 적용하려면 다음과 같이 sudo
설정을 입력 해야 합니다 /etc/sysctl.conf
(생성해야 할 수도 있음).
kern.maxfiles=20480
kern.maxfilesperproc=18000
참고: OS X 10.10 이하에서는 /etc/launchd.conf
다음과 같은 설정을 추가할 수 limit maxfiles
있으며 여기에 입력한 내용이 무시됩니다.
다시 한 번 기사에서:
이 작업을 수행하면 커널 자체에는 최대 파일 수가 있지만 셸에는 그렇지 않을 수도 있습니다. 그리고 이 많은 파일을 차지하는 대부분의 프로세스는 셸에 의해 시작될 것이므로 이를 늘리는 것이 좋습니다.
이에 대한 명령은 다음과 같습니다.
ulimit -S -n 2048 # or whatever number you choose
그 변화도 일시적입니다. 현재 쉘 세션 동안에만 지속됩니다. 쉘을 열 때마다 실행되도록 하려면 쉘 구성 파일( 등)에 이를 추가할 수 있습니다 .bashrc
..zshrc
답변2
각 OS X 버전마다 열린 파일 제한을 변경하는 방법이 완전히 다른 것 같습니다!
OS X 시에라의 경우(10.12.X) 다음을 수행해야 합니다.
1.
에서 파일을 생성 /Library/LaunchDaemons/limit.maxfiles.plist
하고 다음 내용을 붙여넣습니다(두 숫자(각각 소프트 제한 및 하드 제한)를 자유롭게 변경).
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>limit.maxfiles</string>
<key>ProgramArguments</key>
<array>
<string>launchctl</string>
<string>limit</string>
<string>maxfiles</string>
<string>64000</string>
<string>524288</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceIPC</key>
<false/>
</dict>
</plist>
2. 새 파일의 소유자를 변경합니다.
sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist
삼. 다음 새 설정을 로드합니다.
sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist
4. 마지막으로 한도가 올바른지 확인하세요.
launchctl limit maxfiles
답변3
다른 옵션은 범인을 찾는 것일 수 있습니다.
sudo lsof -n | cut -f1 -d' ' | uniq -c | sort | tail
마지막으로 어떤 파일이 열려 있는지 확인할 수 있습니다.
sudo lsof -n | grep socketfil
원하는 경우 프로세스를 종료합니다.
kill $pid
댓글에서:
그만한 가치가 있는 경우 다음을 사용하여 가장 많이 열린 파일이 있는 프로세스 ID 목록을 얻을 수도 있습니다.
lsof -n +c 0 | sed -E 's/^[^ ]+[ ]+([^ ]+).*$/\1/' | uniq -c | sort | tail
답변4
여러분, Mavericks 10.9.4에서
ulimit -n 2048
잘 작동합니다. 새 로그인 세션을 시작해야 할 수도 있습니다.