温馨提示×

centos ulimit如何永久改

小樊
74
2026-08-19 03:39:01
栏目: 智能运维

在 CentOS 里,ulimit 默认只对当前 shell 会话有效,要永久生效需要写到系统配置里。下面按常见场景给你完整说明(CentOS 7/8 通用)。


一、最常用方式(推荐)✅

修改 /etc/security/limits.conf

sudo vi /etc/security/limits.conf

在文件末尾添加(示例):

* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535

说明:

  • nofile:最大打开文件数
  • nproc:最大进程数
  • *:对所有用户生效(可换成具体用户名)
  • soft:软限制(可临时超过)
  • hard:硬限制(不可超过)

✅ 重启或重新登录后生效


二、CentOS 7/8 必须注意(很多人踩坑)⚠️

检查 pam_limits.so 是否启用

查看:

grep pam_limits /etc/pam.d/system-auth

如果没有类似:

session required pam_limits.so

手动加上(一般默认是有的)。


三、systemd 服务(非常重要)⚠️

如果是 systemd 启动的服务(如 Java、Nginx、数据库),limits.conf 不会生效!

方法 1:修改 systemd service 文件

sudo vi /etc/systemd/system/xxx.service

在 [Service] 段加:

LimitNOFILE=65535
LimitNPROC=65535

然后:

sudo systemctl daemon-reload
sudo systemctl restart xxx

方法 2:全局 systemd 限制(不推荐,影响大)

sudo vi /etc/systemd/system.conf
DefaultLimitNOFILE=65535
DefaultLimitNPROC=65535

重启系统生效。


四、只对某个用户永久生效

sudo vi /etc/security/limits.d/用户名.conf
username soft nofile 65535
username hard nofile 65535

五、验证是否生效 ✅

ulimit -n
ulimit -u

⚠️ 注意:

  • 普通 shell → 看 limits.conf
  • systemd 服务 → 看 service 文件

六、常见错误总结 ❌

现象 原因
limits.conf 不生效 systemd 服务
su 切换用户不生效 没走 PAM
docker 容器不生效 宿主机限制

七、最简推荐方案 ✅

场景 做法
普通用户 /etc/security/limits.conf
systemd 服务 service 文件加 LimitNOFILE
所有服务 systemd system.conf(慎用)

如果你愿意,可以告诉我:

  • CentOS 版本
  • 改的是哪种服务(Java / Nginx / MySQL / Docker)

我可以给你精确到文件的配置示例。

0 踩