温馨提示×

如何重置centos ulimit

小樊
44
2026-10-17 17:20:36
栏目: 智能运维

在 CentOS 中重置(或修改)ulimit(资源限制),通常分为当前会话临时重置、用户级永久配置、系统级(systemd)配置三种方式。下面按常见场景说明。


一、查看当前 ulimit

ulimit -a

查看某一项,例如:

ulimit -n   # 文件描述符
ulimit -u   # 最大进程数

二、当前会话临时重置(立即生效,重启失效)

ulimit -n 65535
ulimit -u 4096

⚠️ 注意:

  • 只能调小或调大到系统上限以内
  • 非 root 用户不能调大超过当前硬限制

查看硬限制:

ulimit -Hn
ulimit -Sn

三、用户级永久配置(CentOS 6/7/8 通用)

1. 修改 /etc/security/limits.conf

vi /etc/security/limits.conf

示例(对所有用户):

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

指定用户:

appuser soft nofile 65535
appuser hard nofile 65535

2. 确保 PAM 启用(一般默认已开启)

grep pam_limits /etc/pam.d/login
grep pam_limits /etc/pam.d/sshd

应有:

session required pam_limits.so

✅ 重新登录后生效


四、systemd 服务重置 ulimit(CentOS 7/8 重点)

如果是 systemd 启动的服务(如 nginx、java),limits.conf 可能不生效。

方法 1:服务级配置

systemctl edit nginx

写入:

[Service]
LimitNOFILE=65535
LimitNPROC=4096

然后:

systemctl daemon-reload
systemctl restart nginx

方法 2:全局 systemd 默认

vi /etc/systemd/system.conf
DefaultLimitNOFILE=65535
DefaultLimitNPROC=4096
systemctl daemon-reexec

五、内核级最大限制(必要时)

sysctl fs.file-max

临时:

sysctl -w fs.file-max=1000000

永久:

vi /etc/sysctl.conf
fs.file-max = 1000000
sysctl -p

六、常见问题排查

ulimit 改了但不生效?

  • 是否是 systemd 服务 → 用 LimitNOFILE
  • 是否重新登录
  • 是否超过硬限制
  • 是否容器环境(Docker/K8s 单独限制)

如果你能说明:

  • CentOS 版本(6 / 7 / 8 / Stream)
  • 是 用户 shell 还是 某个服务
  • 具体想重置哪一项(nofile / nproc / core / stack)

我可以给你精确命令。

0 踩