Ang*_*ocA 23 ulimit osx-yosemite macos
我刚刚将 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
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况,我该如何解决问题?
小智 29
似乎有一种完全不同的方法来更改每个 OS X 版本的打开文件限制!
对于 OS X Sierra (10.12.X),您需要:
在/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>
Run Code Online (Sandbox Code Playgroud)更改新文件的所有者:
sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist
Run Code Online (Sandbox Code Playgroud)加载这些新设置:
sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist
Run Code Online (Sandbox Code Playgroud)最后,检查限制是否正确:
launchctl limit maxfiles
Run Code Online (Sandbox Code Playgroud)小智 22
我看到你问了这个问题。
您必须处理一个内核限制, 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 版本之前是如何工作的问题。
有一个幻灯片分享(用于 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
内核.maxfiles=65536
听起来您/etc/sysctl.conf在升级时丢失了文件。
小智 12
在 Mac OS 10.10 中,似乎 ulimit 设置不能超过 launchctl 限制设置。
因此,您应该首先在终端中运行launchctl limit maxfiles以获取当前设置:
launchctl limit maxfiles
maxfiles 256 unlimited
Run Code Online (Sandbox Code Playgroud)
所以在我的情况下,软限制是 256,硬限制是无限的。然后,如果我想将软限制设置为 512:
sudo launchctl limit maxfiles 512 unlimited
Run Code Online (Sandbox Code Playgroud)
可以在此处找到 launchctl 设置限制的详细用法:https : //developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/launchctl.1.html
| 归档时间: |
|
| 查看次数: |
49611 次 |
| 最近记录: |