mac 升级后的某一天,本地跑程序时发现提示 open too many files
, 竟然提示打开文件数过多。
使用ulimit -n
查看,最大的文件数限制为 256 ,这明显太小了。 使用launchctl limit
查看,结果如下:
1 | ~/codes/backupAnyThing/blog(master*) » launchctl limit |
解决方案大致上有三种:
命令行中执行
ulimit -n xxx
, 但是仅对当前 session 生效,新开 session 或者重启后会恢复为系统值在 .bashrc / .zshrc 等脚本中加上
ulimit -n xxxx
, 这样每次新开 session 即可自动设置最大文件描述符显示加入到 launchd 服务中, 永久修改
这里记录下第三种方案的步骤
创建两个 plist文件,民间名分别为 limit.maxproc.plist
, limit.maxfiles.plist
, 内容如下:
file: limit.maxfiles.plist1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20"1.0" encoding="UTF-8" xml version=
<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>200000</string>
<string>200000</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceIPC</key>
<false/>
</dict>
</plist>
file: limit.maxproc.plist
1 | "1.0" encoding="UTF-8" xml version= |
将以上两个文件移动到 /Library/LaunchDaemons
目录下,确保两个文件的权限如下:
1 | -rw-r--r-- 1 root wheel 592B Sep 29 16:39 limit.maxfiles.plist |
重启系统,重启后自动生效。
注: 如果只需要修改 max files
, 仅添加 limit.maxfiles.plist
文件即可。