Mac打开文件最大数限制修改

本文介绍如何使用ulimit命令调整Linux系统的进程限制,并展示了如何修改最大文件描述符数量及系统级的最大文件描述符数。通过一系列命令操作,可以有效管理系统的资源使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


写在前面

本文主要就 ulimitsysctl kern.maxfiles 如何修改 mac 打开文件数的最大限制,进行了讲解和说明


1 ulimit 命令介绍

  • ulimit 是 Linux shell 的内置命令,用于设置或查看进程资源限制,-a 参数表示显示所有资源限制的当前值‌
  • 默认情况下显示的是软限制‌(可通过 -S 显式指定),若需查看硬限制需使用 -H 参数‌

1.1 ulimit -a 输出

$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
file size               (blocks, -f) unlimited
max locked memory       (kbytes, -l) unlimited
max memory size         (kbytes, -m) unlimited
open files                      (-n) 5000
pipe size            (512 bytes, -p) 1
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 709
virtual memory          (kbytes, -v) unlimited

1.2 输出参数解释

  • 1.core file size‌
    core 文件大小限制(单位:块),unlimited 表示无限制‌。
  • 2.data seg size‌
    进程数据段的最大值(单位:KB),unlimited 表示无限制‌。‌
  • 3.file size‌
    进程可创建文件的最大大小(单位:块),unlimited 表示无限制‌。‌
  • 4.open files‌
    单个进程可同时打开的文件数,默认通常为 1024‌。
  • 5.stack size‌
    进程栈的最大大小(单位:KB),默认如 8192‌。‌
  • 6.cpu time‌
    进程最大 CPU 时间(单位:秒),unlimited 表示无限制‌。
  • 7.max user processes‌
    用户可同时运行的进程数(含线程),如 2047‌。‌
  • 8.virtual memory‌
    进程可使用的虚拟内存上限(单位:KB),unlimited 表示无限制‌。

1.3 ulimit 修改文件数限制

1.3.1 查看当前限制
$ ulimit -n
256  # 当前限制为256
1.3.2 修改限制
$ ulimit -n 5000    # 修改为5000
$ ulimit -n       	# 再次查看
5000 				# 已调整为5000

1.4 ulimit 修改注意事项

  1. ulimit 的设置仅对当前 shell 会话有效,退出后失效‌。
  2. 需永久修改限制,需通过 /etc/security/limits.conf 配置文件或 systemd 服务单元调整‌。
  3. 部分参数(如 open files)需 root 权限或 sudo 才能提升至较高值‌

2 sysctl kern.maxfiles 说明

  1. sysctl kern.maxfiles 是 macOS/BSD 系统中用于查看或设置系统级最大文件描述符数量‌的内核参数,表示整个系统允许同时打开的文件总数上限‌
  2. kern.maxfilesperproc 是 macOS/BSD 系统内核参数,用于设置 单个进程可同时打开的文件描述符数量上限‌‌,该参数与全局限制 kern.maxfiles 共同约束系统文件操作能力,确保进程级资源使用不超过系统整体容量‌
  3. 进程级限制(kern.maxfilesperproc)必须 全局限制(kern.maxfiles)‌,若进程尝试打开文件数超过 kern.maxfilesperproc,即使全局限制未达上限,仍会触发错误(如 Too many open files)‌
  4. 需 root 权限,如临时设置为 5000,永久生效需通过 /etc/sysctl.conf 或 macOS‌ 修改后需通过 launchd 持久化
	$ sudo sysctl -w kern.maxfiles=5000
	kern.maxfiles: 12288 -> 5000

	$ sudo sysctl -w kern.maxfilesperproc=5000
	kern.maxfilesperproc: 10240 -> 5000
	
	$ sysctl kern.maxfiles  
	kern.maxfiles: 5000

	$ sysctl kern.maxfilesperproc
	kern.maxfilesperproc: 5000

3 对比说明

参数作用范围约束关系
kern.maxfiles系统全局文件描述符所有进程总和 ≤ 此值‌
kern.maxfilesperproc单个进程文件描述符单个进程 ≤ 此值,且 ≤ kern.maxfiles
ulimit -n用户/进程级限制进程实际限制 ≤ 此值,且 ≤ kern.maxfilesperproc

4 配置流程(推荐)

4.1 提升全局限制

sudo sysctl -w kern.maxfiles=200000  

4.2 提升进程级限制

sudo sysctl -w kern.maxfilesperproc=100000  

4.3 调整进程软/硬限制

ulimit -n 100000  

5 参考文献

参考文献1
参考文献2
参考文献3

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jogging-Snail

谢谢,鼓励,我会再接再厉!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值