在 Debian(以及所有 Linux 系统)中,ulimit 用于控制进程可用资源的上限。它分为 soft limit(软限制) 和 hard limit(硬限制),两者有明显区别。
Segmentation fault、Too many open files)ulimit -n # 打开文件数(soft)
ulimit -a # 查看所有 soft limits
ulimit -Hn # 打开文件数(hard)
ulimit -Ha # 查看所有 hard limits
| 对比项 | Soft Limit | Hard Limit |
|---|---|---|
| 是否生效 | ✅ 立即生效 | ❌ 不直接生效 |
| 普通用户能否修改 | ✅ 可改(≤hard) | ❌ 不可改 |
| root 能否修改 | ✅ | ✅ |
| 超限结果 | 警告 / 报错 | 直接拒绝 |
| 用途 | 实际限制 | 限制上限 |
# 查看
ulimit -Sn # soft
ulimit -Hn # hard
# 修改(只能降低或调到 hard 以内)
ulimit -n 1024
# root 提高 hard limit
ulimit -Hn 65535
ulimit -Sn 65535
/etc/security/limits.conf* soft nofile 65535
* hard nofile 65535
需要
pam_limits.so支持(通常已启用)
[Service]
LimitNOFILE=65535
soft 是“你能用的”,hard 是“你最多能用到的”
普通用户只能在 hard 范围内调整 soft。
如果你有具体场景(如 MySQL、Nginx、Docker),我可以告诉你该怎么设。