在OSX Yosemite中打开文件的限制无法像以前一样工作[重复]


22

我刚刚将Mac OS X更新为Yosemite,现在某些应用程序不起作用(IBM DB2)。我知道我需要将“打开文件”设置为65000,但是该命令不起作用。

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

为什么会发生这种情况,我该如何解决该问题?

Answers:


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 '17

1
在重新启动之前,该过程对我不起作用。谢谢!它确实有很大帮助
user2773086 '17

该要点还表示,修改这些文件是更新Sierra gist的
Devin G Rhode

1
重新启动对于限制起作用(即使第4步确实显示了更新的值)也是必要的
18th

21

我看到你到处都问这个问题。

您必须处理一个内核限制,kern.maxfiles,这是内核限制,设置ulimit时不能超过。

有关如何使用sysctl操作kern.maxifiles的说明,请参见Krypted博客页面Mac OS X中的Maximum Files

我尚未在Mac上加载优胜美地。在sysctl -w kern.maxfiles=65000对小牛,它具有相同的kern.maxfiles = 12288限制默认工作。

我检查了我的VM OS X 10.6.8,它具有相同的限制,这困扰着它在OS X版本之前是如何工作的。

有一个幻灯片共享(用于Mac OS X的DB2安装和设置用于Mac OS X的DB2)显示了使用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 2014年

另一件事是,我的sysctl.conf与您在帖子中放入的文件相同。我创建了第一次安装DB2(一年前),但是在迁移时并没有碰到它。
AngocA 2014年

问题是在该文件中的一些blankspaces:ibm.com/developerworks/community/forums/html/...
AngocA

1
尾随空格,谁会想到的。苹果应该拥有世界上最好的程序员。
user187561 2014年

@ 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限制maxfiles 512无限制”似乎将我的(软,硬)限制设置为2015年
Dave X

2
“ launchctl limit maxfiles不限制无限制; launchctl limit maxfiles”指示10​​240是可能输入的最大限制。静默使用较大的数字会失败,将设置保持为以前的状态。
戴夫X
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.