温馨提示×

centos ulimit如何永久设置

小樊
51
2026-09-11 23:56:11
栏目: 智能运维

在 CentOS 中,ulimit 的永久设置通常分为两种情况:用户级(登录用户) 和 系统/服务级(systemd)。下面按常见场景说明。


一、用户级永久设置(针对登录用户)

方法 1:修改 /etc/security/limits.conf

这是最常用的方法。

vi /etc/security/limits.conf

示例(设置用户 appuser 的打开文件数):

appuser soft nofile 65535
appuser hard nofile 65535

或对所有用户:

* soft nofile 65535
* hard nofile 65535

常见参数:

  • nofile:打开文件数
  • nproc:进程数
  • core:core 文件大小

⚠️ 注意:

  • 修改后重新登录才会生效
  • 依赖 pam_limits.so,确保:
grep pam_limits /etc/pam.d/login
/etc/pam.d/system-auth

方法 2:在 /etc/security/limits.d/ 下新建文件(推荐)

CentOS 默认会加载该目录:

vi /etc/security/limits.d/99-app.conf

内容同上:

appuser soft nofile 65535
appuser hard nofile 65535

二、systemd 服务永久设置(CentOS 7+)

如果是 通过 systemd 启动的服务(如 nginx、java),
limits.conf 不会生效!

方法:修改 service 文件

systemctl edit nginx

或编辑:

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

在 [Service] 段增加:

[Service]
LimitNOFILE=65535
LimitNPROC=65535

重新加载:

systemctl daemon-reload
systemctl restart nginx

查看是否生效:

cat /proc/<pid>/limits

三、系统级内核参数(可选)

某些资源还需调整内核参数:

vi /etc/sysctl.conf

示例:

fs.file-max = 1000000

生效:

sysctl -p

四、验证 ulimit

ulimit -a
ulimit -n

五、常见坑总结

场景 是否生效
SSH 登录用户 limits.conf ✅
su 切换用户 limits.conf ✅
systemd 服务 limits.conf ❌
crontab 任务 limits.conf ❌(需单独设置)

如果你能说明:

  • CentOS 版本(6 / 7 / 8 / Stream)
  • 是 用户、服务 还是 脚本
  • 具体要设置哪一项(nofile / nproc / stack 等)

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

0 踩