温馨提示×

centos ulimit在哪配置

小樊
51
2026-09-21 08:44:44
栏目: 智能运维

在 CentOS 中,ulimit(资源限制)可以在多个地方配置,具体取决于你想要临时生效还是永久生效,以及作用范围是当前 shell、某个用户还是系统服务。

下面按常见场景说明:


一、临时配置(当前会话生效)

直接在终端执行:

ulimit -n 65535      # 打开文件数
ulimit -u 4096       # 最大进程/线程数
ulimit -c unlimited  # core 文件大小

⚠️ 只在当前 shell 及其子进程生效,重启或退出后失效。


二、用户级永久配置(推荐)

1️⃣ /etc/security/limits.conf

这是最常用的方式。

vi /etc/security/limits.conf

示例:

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

格式:

用户/组  限制类型  资源类型  值

常见资源:

  • nofile:打开文件数
  • nproc:进程数
  • core:core 文件
  • memlock:内存锁

✅ 需要 PAM 支持(默认 CentOS 已开启)


2️⃣ /etc/security/limits.d/*.conf

CentOS 推荐把配置放到这里,避免修改主文件:

vi /etc/security/limits.d/20-nofile.conf

内容与 limits.conf 相同,优先级更高。


三、系统服务(systemd 服务)

如果是 systemd 管理的服务,limits.conf 不一定生效。

方式一:在 service 文件中配置

vi /usr/lib/systemd/system/nginx.service

在 [Service] 段加入:

[Service]
LimitNOFILE=65535
LimitNPROC=4096

然后:

systemctl daemon-reload
systemctl restart nginx

方式二:全局 systemd 限制

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

修改后重启系统生效。


四、内核级参数(相关但不同)

有些限制需要改内核参数:

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

生效:

sysctl -p

五、验证是否生效

ulimit -a

或服务中查看:

cat /proc/<pid>/limits

六、常见问题

❓ limits.conf 不生效?

  • 确认用户是通过 login shell 登录(SSH 正常)
  • 服务是 systemd 启动的 → 必须用 LimitNOFILE
  • 确认 PAM 中启用了 pam_limits.so

如果你能说明:

  • CentOS 版本(6 / 7 / 8 / Stream)
  • 是 普通用户 / 服务 / Docker 场景

我可以给你更精确的配置示例。

0 踩