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し、(それぞれ、ソフトとハードの限界ある2つの数値を変更して自由に感じる)で次のように貼り付けます。

    <?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 RHODE

1
制限を機能させるには、再起動が必要です(ステップ4で更新された値が表示されている場合でも)
18

21

あなたはこの質問を全面的に聞いたようです。

対処しなければならないカーネルの制限があります。kern.maxfilesはカーネルの制限であり、ulimitを設定するときに超えることはできません。

sysctlを使用してkern.maxifilesを操作する方法の説明については、KryptedブログページMac OS Xの最大ファイルを参照してください。

MacにYosemiteをまだロードしていません。sysctl -w kern.maxfiles=65000デフォルトで= 12288上限同じkern.maxfilesを持っているマーベリックス、上で動作します。

私は自分のVM OS X 10.6.8をチェックしましたが、OS Xバージョン以前にどのように機能していたかという疑問を抱かせる同じ制限がありました。

DB2を使用するための推奨制限を示すスライド共有(Mac OS X用DB2、Mac OS X用DB2のインストールと設定)があります。7ページのシステムパラメータの増加を参照してください。

システムパラメータを増やす

/etc/sysctl.confを開き(まだ存在しない場合は作成し)、次の設定を挿入します。これらの設定により、DB2がMacで動作するために必要な共有メモリとユーザー制限の一部の設定が増加します。

以下を/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 14年

別のことは、私のsysctl.confが投稿に入れたファイルと同一であることです。DB2を初めてインストールしたとき(1年前)に作成しましたが、移行のためにDB2に触れませんでした。
AngocA 14年

:問題は、そのファイルにいくつかのblankspacesたibm.com/developerworks/community/forums/html/...
AngocA

1
考えていたであろう後続スペース。Appleには世界最高のプログラマーがいるはずです。
user187561 14年

@ user187561 sysctl(8)はBSDから来ています。
ドリュースティーブンス

12

Mac OS 10.10では、ulimit設定はlaunchctlの制限設定を超えることはできないようです。

そのため、まずターミナルで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 limit maxfiles 512 unlimited」は、2015-09-30にYosemite 10.10.5で私の(ソフト、ハード)制限を(512,10240)に設定するように見える
Dave X

2
「launchctl limit maxfiles unlimited unlimited; launchctl limit maxfiles」は、入力可能な最大制限が10240であることを示しています。これより大きな数値を使用すると、設定は以前のままになり、静かに失敗します。
デイブX
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.