OSX Yosemite에서 이전과 같이 파일 열기 제한이 작동하지 않음 [중복]

방금 Mac OS X을 Yosemite로 업데이트했으며 이제 일부 응용 프로그램 (IBM DB2)이 작동하지 않습니다. Open Files를 65000으로 설정해야한다는 것을 알고 있지만 명령이 작동하지 않습니다.

Andress-MBP:~ root# ulimit -n 12288
Andress-MBP:~ root# ulimit -n 12289
-sh: ulimit: open files: cannot modify limit: Invalid argument

왜 이런 일이 발생하며 어떻게 문제를 해결할 수 있습니까?



답변

OS X의 각 버전에 대해 열린 파일 제한을 변경하는 방법이 완전히 다른 것 같습니다!

OS X Sierra (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
    
  3. 다음 새 설정을로드하십시오.

    sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist
    
  4. 마지막으로, 한계가 올바른지 확인하십시오.

    launchctl limit maxfiles
    

답변

나는 당신이이 질문을 온통 물었다 고 봅니다.

커널 제한 인 kern.maxfiles를 다루어야하는 커널 제한이 있으며 ulimit를 설정할 때 초과 할 수 없습니다.

sysctl을 사용하여 kern.maxifiles를 조작하는 방법에 대한 설명 은 Krypted 블로그 페이지 Mac OS X의 최대 파일을 참조하십시오 .

아직 Mac에 Yosemite를로드하지 않았습니다. sysctl -w kern.maxfiles=65000같은 kern.maxfiles = 기본적으로 12288 제한이 매버릭스에 작동합니다.

내 VM OS X 10.6.8을 확인했는데 OS X 버전 이전에 이전에 어떻게 작동했는지에 대한 질문을하는 동일한 한계가있었습니다.

DB2 사용에 대한 권장 한계를 보여주는 슬라이드 공유 ( Mac OS X 용 DB2 설치 및 설정 )가 있습니다 ( 7 페이지 시스템 매개 변수 늘리기 참조).

시스템 매개 변수 증가

/etc/sysctl.conf를 열고 (또는 존재하지 않는 경우 작성) 다음 설정을 삽입하십시오. 이 설정은 Mac에서 작업하기 위해 DB2에 필요한 공유 메모리 및 사용자 한계에 대한 일부 설정을 증가시킵니다.

/etc/sysctl.conf
kern.sysv.shmmax = 1073741824
kern.sysv.shmmin = 1
kern.sysv.shmmni = 4096
kern.sysv.shmseg = 32
kern.sysv.shmall = 1179648
kern.maxfilesperproc = 65536에 다음을 추가하십시오.
kern.maxfiles = 65536

/etc/sysctl.conf업그레이드 할 때 파일 을 잃어버린 것 같습니다 .


답변

Mac OS 10.10에서는 ulimit 설정이 launchctl limit 설정을 초과 할 수 없습니다.

따라서 터미널에서 launchctl limit maxfiles 를 먼저 실행 하여 현재 설정을 가져와야 합니다.

launchctl limit maxfiles
maxfiles    256            unlimited

제 경우에는 소프트 한계가 256이고, 하드 한계는 무제한입니다. 그리고 소프트 제한을 512로 설정하려면 다음을 수행하십시오.

sudo launchctl limit maxfiles 512 unlimited

제한 설정을위한 launchctl의 자세한 사용법은 https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/launchctl.1.html 에서 확인할 수 있습니다.


답변