在 Debian(以及大多数 Linux 发行版)中,ulimit 可以“永久”设置,但不是通过 ulimit 命令本身永久生效,因为 ulimit 只在当前 shell 及其子进程中有效。
下面按使用场景说明如何正确“永久”设置。
/etc/security/limits.conf适用于 登录用户(PAM 会话)
编辑:
sudo vim /etc/security/limits.conf
示例(永久限制某用户):
username soft nofile 65535
username hard nofile 65535
或对所有用户:
* soft nofile 65535
* hard nofile 65535
⚠️ 注意:
pam_limits.so)/etc/security/limits.d/*.conf推荐方式(优于直接改 limits.conf)
sudo vim /etc/security/limits.d/99-custom.conf
内容同上。
limits.conf 不会生效
要在 service 文件中设置:
[Service]
LimitNOFILE=65535
LimitNPROC=4096
然后:
sudo systemctl daemon-reload
sudo systemctl restart xxx
某些限制不是 ulimit 能控制的,例如:
fs.file-max = 1000000
设置方式:
sudo vim /etc/sysctl.conf
fs.file-max = 1000000
生效:
sudo sysctl -p
你可以在:
~/.bashrc
/etc/profile
里写:
ulimit -n 65535
❌ 缺点:
| 场景 | 正确方式 |
|---|---|
| 登录用户 | /etc/security/limits.conf |
| systemd 服务 | service 文件 LimitXxx |
| 内核级 | /etc/sysctl.conf |
| 临时测试 | ulimit 命令 |
如果你能告诉我:
我可以给你精确可用的配置示例。