在 Debian(以及大多数 Linux 发行版)中,ulimit 用于限制当前 shell 及其子进程的资源使用。下面按临时修改的常见场景说明。
ulimit -a
常用单项查看:
ulimit -n # 文件描述符
ulimit -u # 最大进程数
ulimit -s # 栈大小
直接在终端执行:
ulimit -n 65535
ulimit -u 4096
⚠️ 注意:
普通用户只能调低 hard limit,不能调高。
sudo -i
ulimit -Hn 100000
ulimit -Sn 65535
说明:
-H:hard limit(上限)-S:soft limit(当前生效)(sh -c "ulimit -n 65535 && ./your_program")
或在脚本中:
#!/bin/bash
ulimit -n 65535
./your_program
⚠️ systemd 会忽略 ulimit 设置
systemctl edit servicename
写入:
[Service]
LimitNOFILE=65535
然后:
systemctl restart servicename
查看是否生效:
cat /proc/$(pidof servicename)/limits
ulimit -n
cat /proc/$$/limits
❌ bash: ulimit: open files: cannot modify limit: Operation not permitted
❌ ulimit 修改后程序没变
| 场景 | 方法 |
|---|---|
| 当前 shell 临时改 | ulimit -n 65535 |
| root 临时提上限 | ulimit -Hn 100000 |
| 服务临时改 | systemctl edit + LimitNOFILE |
| 永久修改 | /etc/security/limits.conf |
如果你有具体场景(如 MySQL / Nginx / Docker / 高并发服务),我可以给你最合适、最安全的修改方案。