系统限制
在最新的macOS中更改限制/etc/launchd.conf
或/etc/rc.local
不再支持更改。请参阅:旧系统和技术。
相反,您应该创建一个新的启动代理。
这是使用PlistBuddy
命令的命令示例(请参阅:)man PlistBuddy
:
sudo /usr/libexec/PlistBuddy /Library/LaunchAgents/com.launchd.maxfiles.plist \
-c "add Label string com.launchd.maxfiles" \
-c "add ProgramArguments array" \
-c "add ProgramArguments: string launchctl" \
-c "add ProgramArguments: string limit" \
-c "add ProgramArguments: string maxfiles" \
-c "add ProgramArguments: string 10240" \
-c "add ProgramArguments: string unlimited" \
-c "add RunAtLoad bool true"
和类似的maxproc
限制:
sudo /usr/libexec/PlistBuddy /Library/LaunchAgents/com.launchd.maxproc.plist \
-c "add Label string com.launchd.maxproc" \
-c "add ProgramArguments array" \
-c "add ProgramArguments: string launchctl" \
-c "add ProgramArguments: string limit" \
-c "add ProgramArguments: string maxproc" \
-c "add ProgramArguments: string 2000" \
-c "add ProgramArguments: string unlimited" \
-c "add RunAtLoad bool true"
要加载上述文件,请运行:sudo launchctl load /Library/LaunchAgents/com.launchd.*.plist
。
笔记:
- 要打印文件,请运行:
cat
或PlistBuddy -x -c Print /Library/LaunchAgents/com.launchd.maxfiles.plist
。
- 要在加载期间检查日志中是否有任何错误,请运行:
tail -f /var/log/system.log
。
- 要查看当前
launchd
限制,请运行:launchctl limit
。
- 该
.plist
文件可以放置在每个用户或系统范围的代理文件夹(LaunchAgents
)中。请参阅:man launchd
和man launchd.plist
,或此或该答案以获取更多详细信息。
内核限制
请注意,上述的launchd系统限制依然由内核的限制,所以你不能将它们设置比在内核态变量(参见:设置实际极限时man sysctl
的帮助)。
要查看当前的内核限制,请运行:sysctl -a | grep ^kern.max
。
要增加maxfiles
限制,请运行:sudo sysctl -w kern.maxfiles=20480
。
为了使它们持久,请使用类似的方法来创建启动.plist
文件,例如
sudo /usr/libexec/PlistBuddy /Library/LaunchAgents/com.kern.maxfiles.plist \
-c "add Label string com.kern.maxfiles" \
-c "add ProgramArguments array" \
-c "add ProgramArguments: string sysctl" \
-c "add ProgramArguments: string -w" \
-c "add ProgramArguments: string kern.maxfiles=20480" \
-c "add RunAtLoad bool true"
外壳极限
对于shell限制,添加相关ulimit
命令到~/.bashrc
或~/.bash_profile
启动个人用户的文件,或者/etc/bashrc
为所有用户。请参阅:如何在Mac上添加持久化Shell ulimit设置?
建议添加的行:
# Changes the ulimit limits.
ulimit -Sn 4096 # Increase open files.
ulimit -Sl unlimited # Increase max locked memory.