Plainnotes

改了 limits.conf,ulimit 还是老值

2026-06-03 · 3 分钟系统

在 /etc/security/limits.conf 里加了 * soft nofile 65535,重新登录 ulimit -n 还是 1024。三个原因按概率排:

一,limits.conf 由 pam_limits 读取,只在登录会话生效。systemd 拉起的服务不经过 PAM,读的是 unit 里的 LimitNOFILE=,默认继承 systemd 自己的值。

二,/etc/ssh/sshd_config 里如果开了 UsePAM no,SSH 登录也不生效。

三,* 不匹配 root,root 要单独写一行,或者用 root hard nofile。

最稳的做法是别依赖全局配置,在 unit 里写死:

[Service]
LimitNOFILE=65535

然后 systemctl daemon-reload && systemctl restart app,用 cat /proc/<pid>/limits 确认。