温馨提示×

centos ulimit怎么修改

小樊
52
2026-09-11 23:53:11
栏目: 智能运维

在 CentOS 中修改 ulimit(用户资源限制)通常分为临时修改和永久修改两种方式,下面按常见场景说明。


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

直接使用 ulimit 命令:

# 查看所有限制
ulimit -a

# 修改最大打开文件数
ulimit -n 65535

# 修改最大进程数
ulimit -u 4096

# 不限制 core 文件大小
ulimit -c unlimited

⚠️ 注意:

  • 只对当前终端会话有效
  • 非 root 用户只能调小不能调大

二、永久修改(推荐)

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️⃣ systemd 系统(CentOS 7+ 很重要)

如果是服务(如 Nginx、MySQL),limits.conf 可能不生效,需要改 systemd。

方法一:全局修改

vi /etc/systemd/system.conf

修改或取消注释:

DefaultLimitNOFILE=65535
DefaultLimitNPROC=4096

然后执行:

systemctl daemon-reexec

方法二:单个服务

systemctl edit nginx

添加:

[Service]
LimitNOFILE=65535
LimitNPROC=4096

重载:

systemctl daemon-reload
systemctl restart nginx

三、验证是否生效

# 当前用户
ulimit -n

# 某个进程
cat /proc/<pid>/limits

四、常见问题

❓ 修改后不生效?

  • 是否重新登录?
  • 是否用了 systemd 服务?
  • 是否 PAM 未加载 limits?
    grep pam_limits /etc/pam.d/login
    

❓ root 用户也受限?

  • CentOS 7+ 默认对 root 也受 systemd 限制

如果你能告诉我:

  • CentOS 版本(6 / 7 / 8)
  • 修改的是哪种资源(文件数 / 进程数 / 内存)
  • 是用户还是服务

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

0 踩