在 Debian 里,ulimit(实际是 shell 内建命令,控制的是 per-process 资源限制)可以从多个地方配置,取决于你是想:
下面按常见场景说明。
ulimit -n 65535
ulimit -u 4096
查看当前限制:
ulimit -a
⚠️ 只在当前 shell 及其子进程有效,重启或新登录失效。
/etc/security/limits.conf
示例:
* soft nofile 65535
* hard nofile 65535
username soft nproc 4096
username hard nproc 4096
/etc/security/limits.d/*.conf
例如:
/etc/security/limits.d/90-custom.conf
必须启用 PAM:
/etc/pam.d/common-session
/etc/pam.d/common-session-noninteractive
应包含:
session required pam_limits.so
✅ 适用于:
❌ 不适用于 systemd 服务(见第 4 点)
如果是 systemd user session:
~/.config/systemd/user.conf
或
/etc/systemd/user.conf
示例:
[Manager]
DefaultLimitNOFILE=65535
limits.conf 不会影响 systemd 服务
[Service]
LimitNOFILE=65535
LimitNPROC=4096
然后:
systemctl daemon-reload
systemctl restart xxx
/etc/systemd/system.conf
DefaultLimitNOFILE=65535
修改后需重启系统或 systemctl daemon-reexec
某些资源受内核参数限制:
/proc/sys/fs/file-max
临时:
sysctl -w fs.file-max=1000000
持久:
/etc/sysctl.conf
fs.file-max=1000000
| 场景 | 配置位置 |
|---|---|
| 临时 | ulimit |
| 用户登录 | /etc/security/limits.conf |
| 用户 systemd | user.conf |
| 系统服务 | .service 或 system.conf |
| 内核上限 | sysctl |
如果你能说明:
我可以直接给你精确配置示例。