温馨提示×

centos ulimit配置在哪改

小樊
52
2026-10-17 17:23:36
栏目: 智能运维

在 CentOS 中,ulimit 的配置可以在多个地方修改,具体取决于你是想临时生效还是永久生效,以及作用范围是当前 shell / 用户 / 系统服务。

下面按常见场景说明:


一、临时修改(当前会话生效)

直接在终端执行:

ulimit -n 65535      # 打开文件数
ulimit -u 4096       # 最大进程数

⚠️ 只在当前 shell 及其子进程中有效,重启或重新登录后失效。


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

1️⃣ /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:进程数

✅ 需要重新登录用户才生效


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

CentOS 推荐使用目录方式,优先级高于 limits.conf

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

内容示例:

* soft nofile 65535
* hard nofile 65535

三、systemd 服务(CentOS 7+ 很重要)

如果你发现:

  • limits.conf 配了但 服务不生效
  • 用 systemctl 启动的程序

那是因为 systemd 不读 limits.conf

修改方式

编辑服务文件:

systemctl edit nginx

添加:

[Service]
LimitNOFILE=65535
LimitNPROC=4096

然后:

systemctl daemon-reload
systemctl restart nginx

四、系统级(不常用)

/etc/profile 或 ~/.bashrc

ulimit -n 65535

仅对登录 shell 有效,不建议作为主配置方式。


五、查看当前限制

ulimit -a

查看某个进程:

cat /proc/<pid>/limits

六、常见坑总结

✅ CentOS 7/8:

  • 用户登录 → limits.conf
  • systemd 服务 → systemctl edit ❌ 只改 ulimit 命令不持久 ❌ 改了不重启服务 = 不生效

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

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

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

0 踩