要判断 CentOS 上 ulimit 是否生效,可以从下面几个方面来确认。
ulimit -a
或单独看某一项,例如:
ulimit -n # 文件描述符
ulimit -u # 最大进程数
✅ 如果这里显示的值和你设置的一致,说明 当前 shell 已生效。
⚠️ 注意:ulimit 只对 当前 shell 及其子进程 生效。
/etc/security/limits.confgrep -v '^#' /etc/security/limits.conf
示例:
* soft nofile 65535
* hard nofile 65535
/etc/security/limits.d/CentOS 会优先读取:
ls /etc/security/limits.d/
cat /etc/security/limits.d/*.conf
cat /proc/<PID>/limits
例如 nginx:
ps aux | grep nginx
cat /proc/1234/limits
✅ 如果这里的值正确,说明 对进程真正生效了。
exit
ssh user@host
CentOS 7+ 的 systemd 服务需要:
[Service]
LimitNOFILE=65535
然后:
systemctl daemon-reload
systemctl restart xxx
su 而不是 loginsu - user # 正确
su user # 可能不加载 limits
ulimit -a 显示正确/etc/security/limits.conf 配置正确/proc/PID/limits 验证通过如果你愿意,可以把:
发出来,我可以帮你精确判断 为什么没生效。