增加 Yosemite 应用程序的最大文件限制

增加 Yosemite 应用程序的最大文件限制

我一直在尝试提高 Yosemite 上的 maxfile 限制和 maxfileperproc 限制,但没有成功。我在 etc 文件夹中创建了一个 sysctl.conf 文件,该文件已成功增加了通过 grep 显示的值。

但是,如果我查看 launchctl limit maxfiles,该值仍然不正确。

一些解决方案似乎使用 ulimit -n 来设置限制,但在终端中,我实际上无法使用它。它给出了“无效参数”或“未经授权的操作”的错误。我已经通过 bash_profile 脚本成功增加了 ulimit,但由于该应用程序是从应用程序而不是 shell 运行的,所以这无关紧要。我还通过 root 用户成功增加了 ulimit,但当该用户注销时,它不会保存更改。

理想情况下,我正在寻找像 launchd.conf 文件那样工作的东西,并且在重新启动时自动增加 launchctl limit maxfiles {#}。

有没有办法成功做到这一点?也许使用像 Lingon 这样的第三方,或者使用启动守护程序?

谢谢!

答案1

我通过玩弄来自 Basho 的 Riak。优胜美地方向如下:


要在 Mac OS X Yosemite 中在系统范围内调整打开文件的限制,您必须创建两个配置文件。

第一个是属性列表(又名 plist)文件,其中/Library/LaunchDaemons/limit.maxfiles.plist包含以下 XML 配置:

<?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>65536</string>
          <string>65536</string>
        </array>
      <key>RunAtLoad</key>
        <true/>
      <key>ServiceIPC</key>
        <false/>
    </dict>
  </plist>

这会将打开文件数限制设置为 65536。第二个 plist 配置文件应存储在/Library/LaunchDaemons/limit.maxproc.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.maxproc</string>
      <key>ProgramArguments</key>
        <array>
          <string>launchctl</string>
          <string>limit</string>
          <string>maxproc</string>
          <string>2048</string>
          <string>2048</string>
        </array>
      <key>RunAtLoad</key>
        <true />
      <key>ServiceIPC</key>
        <false />
    </dict>
  </plist>

这两个 plist 文件必须由 拥有root:wheel并具有权限-rw-r--r--。默认情况下,此权限应已到位,但您可以通过运行 来确保它们已到位sudo chmod 644 <filename>。虽然上述步骤将导致系统范围的打开文件限制在重新启动时正确设置,但您可以通过运行 手动应用它们launchctl limit

除了在系统级别设置这些限制之外,我们还建议在会话级别进行设置,方法是将以下行附加到bashrcbashprofile或类似文件中:

ulimit -n 65536
ulimit -u 2048

与 plist 文件一样,您的bashrc或类似的文件也应具有-rw-r--r--权限。此时,您可以重新启动计算机并进入ulimit -n终端。如果您的系统配置正确,您应该会看到 maxfiles 已设置为 65536。


在其他版本的 OS X 上,这个过程略有不同,但该团队也提供了很好的文档。再次感谢团队在芭蕉记录这一过程。

相关内容