在 Debian(以及大多数 Linux 发行版)里,ulimit 是 shell 内置命令,只能对当前 shell 及其子进程生效,因此是“临时”的(重启或新开 shell 就失效)。
ulimit -a
最大打开文件数
ulimit -n 65535
最大进程数
ulimit -u 4096
core 文件大小(不限)
ulimit -c unlimited
栈大小
ulimit -s 8192
⚠️ 注意:
- 普通用户 只能调小,不能调大
- 想调大需要 root 权限
( ulimit -n 65535; your_command )
或:
bash -c 'ulimit -n 65535; ./app'
sudo su
ulimit -n 100000
su - username
⚠️ 仍然受 /etc/security/limits.conf 限制
cat /proc/sys/fs/file-max
sysctl -w fs.file-max=1000000
或:
echo 1000000 > /proc/sys/fs/file-max
如果是 systemd 服务:
systemctl edit nginx
[Service]
LimitNOFILE=65535
然后:
systemctl daemon-reload
systemctl restart nginx
❌ ulimit 对 已经运行的进程无效
❌ 修改后新开 shell 不继承
❌ Docker / systemd 有独立限制
如果你能告诉我:
我可以直接给你最合适的一条命令。