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


22

방금 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

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

답변:


25

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
    

7
macOS 10.13에 대한 새로운 답변을 기대합니다! :)
NSTJ

1
다시 시작할 때까지 프로세스가 작동하지 않았습니다. 감사! 정말 많은 도움이되었습니다
user2773086

이러한 파일을 수정 말한다이 요점은 시에라이 열려있는 파일 제한 업데이트 할 수있는 방법입니다 gist.github.com/tombigel/d503800a282fcadbee14b537735d202c
데빈 G로드

1
한계가 작동하려면 다시 시작해야합니다 (4 단계에서 업데이트 된 값을 표시하더라도)
trinth

21

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

커널 제한 인 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업그레이드 할 때 파일 을 잃어버린 것 같습니다 .


사실, 오래 전에 DB2를 설치했는데 작동했습니다. 그런 다음 작년에 문제없이 Maverick으로 업데이트했습니다. 그리고 오늘 요세미티로 업데이트 했는데이 문제가 나타납니다. 이미 설치된 DB2를 시작할 수 없습니다.
AngocA

또 다른 것은 내 sysctl.conf가 게시물에 넣은 파일과 동일하다는 것입니다. 1 년 전 DB2를 처음 설치할 때 작성했지만 이주를 위해이를 만지지 않았습니다.
AngocA

문제는 해당 파일의 일부 blankspaces이었다 ibm.com/developerworks/community/forums/html/...은
AngocA

1
생각했던 후미의 공간. 애플은 세계 최고의 프로그래머를 보유하고 있습니다.
user187561

@ user187561 sysctl(8)은 BSD에서 온 것입니다.
Drew Stephens

12

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 에서 확인할 수 있습니다.


'launchctl 제한 MAXFILES 512 무제한'2015년 9월 30일에 요세미티 10.10.5에 (512,10240) 내 (소프트, 하드) 제한을 설정하기 위해 나타납니다
데이브 X

2
"launchctl limit maxfiles 무제한 무제한; launchctl limit maxfiles"는 10240이 입력 할 수있는 최대 한계임을 나타냅니다. 더 큰 숫자를 사용하면 자동으로 실패하여 설정을 이전과 동일하게 유지합니다.
Dave X
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.