在 Debian(以及大多数 Linux 发行版)里,ulimit 权限不足通常是因为:
/etc/security/limits.conf 未配置pam_limits下面按最常见场景给你解决方案。
ulimit -n 65536
-bash: ulimit: open files: cannot modify limit: Operation not permitted
非 root 用户只能调小,不能调大。
由 root 在 /etc/security/limits.conf 中设置:
sudo vim /etc/security/limits.conf
添加(示例):
* soft nofile 65536
* hard nofile 65536
然后:
✅ 验证:
ulimit -n
可能原因:PAM 没加载 pam_limits
检查:
grep pam_limits /etc/pam.d/common-session
如果没有,添加:
session required pam_limits.so
(通常在 /etc/pam.d/common-session 和 common-session-noninteractive)
即使 limits.conf 写了,systemd 服务也不认。
sudo systemctl edit your-service
写入:
[Service]
LimitNOFILE=65536
LimitNPROC=65536
然后:
sudo systemctl daemon-reload
sudo systemctl restart your-service
sudo vim /etc/systemd/system.conf
修改:
DefaultLimitNOFILE=65536
重启系统生效。
确认内核参数:
sysctl fs.file-max
太小就改:
sudo sysctl -w fs.file-max=1000000
持久化:
echo "fs.file-max=1000000" | sudo tee -a /etc/sysctl.conf
如果你能贴出:
我可以给你精确命令。