在 Debian 系统中,ulimit(资源限制)并不是由单一固定文件配置的,而是在多个不同位置根据场景来设置。下面按常见情况给你总结:
最常用、最标准的配置位置
/etc/security/limits.conf
示例:
* soft nofile 65535
* hard nofile 65535
root soft nproc 4096
/etc/security/limits.d/*.conf
(Debian 会优先读取 limits.d 下的文件)
必须启用 PAM 限制:
/etc/pam.d/common-session
/etc/pam.d/common-session-noninteractive
应包含:
session required pam_limits.so
⚠️ 只对登录会话生效(ssh、su、tty),对 systemd 服务不一定生效。
如果你的程序是以 systemd 服务运行的,limits.conf 可能不会生效。
编辑 service 文件:
/etc/systemd/system/xxx.service
在 [Service] 段:
[Service]
LimitNOFILE=65535
LimitNPROC=4096
然后:
systemctl daemon-reload
systemctl restart xxx
/etc/systemd/system.conf
/etc/systemd/user.conf
示例:
DefaultLimitNOFILE=65535
ulimit -n 65535
只对当前 shell 及其子进程生效,重启失效。
/etc/sysctl.conf
例如:
fs.file-max = 1000000
生效:
sysctl -p
| 场景 | 配置文件 |
|---|---|
| 登录用户 | /etc/security/limits.conf |
| 细分配置 | /etc/security/limits.d/*.conf |
| systemd 服务 | *.service 或 system.conf |
| 临时 | ulimit 命令 |
| 内核最大文件数 | /etc/sysctl.conf |
如果你能说明 具体场景(如:SSH 登录用户 / Nginx / Docker / MySQL),我可以直接给你最准确的一份配置示例。