在 CentOS 中,ulimit 的配置可以在多个地方修改,具体取决于你是想临时生效还是永久生效,以及作用范围是当前 shell / 用户 / 系统服务。
下面按常见场景说明:
直接在终端执行:
ulimit -n 65535 # 打开文件数
ulimit -u 4096 # 最大进程数
⚠️ 只在当前 shell 及其子进程中有效,重启或重新登录后失效。
/etc/security/limits.conf这是最常用的修改方式。
vi /etc/security/limits.conf
示例:
* soft nofile 65535
* hard nofile 65535
* soft nproc 4096
* hard nproc 4096
说明:
*:所有用户(也可写具体用户名,如 www)soft:软限制hard:硬限制nofile:打开文件数nproc:进程数✅ 需要重新登录用户才生效
/etc/security/limits.d/*.confCentOS 推荐使用目录方式,优先级高于 limits.conf
vi /etc/security/limits.d/20-nofile.conf
内容示例:
* soft nofile 65535
* hard nofile 65535
如果你发现:
limits.conf 配了但 服务不生效systemctl 启动的程序那是因为 systemd 不读 limits.conf
编辑服务文件:
systemctl edit nginx
添加:
[Service]
LimitNOFILE=65535
LimitNPROC=4096
然后:
systemctl daemon-reload
systemctl restart nginx
/etc/profile 或 ~/.bashrculimit -n 65535
仅对登录 shell 有效,不建议作为主配置方式。
ulimit -a
查看某个进程:
cat /proc/<pid>/limits
✅ CentOS 7/8:
limits.confsystemctl edit
❌ 只改 ulimit 命令不持久
❌ 改了不重启服务 = 不生效如果你愿意,可以告诉我:
我可以给你精确配置示例。