在 Debian 系统中,ulimit 的默认值取决于 具体的资源类型、系统版本、启动方式(登录 shell / systemd / 服务) 以及 PAM 配置。下面给你一个清晰、实用的说明。
在终端中执行:
ulimit -a
常见输出示例(不同机器可能略有差异):
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 63992
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 63992
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
| ulimit 项目 | 默认值(常见) | 说明 |
|---|---|---|
open files (-n) |
1024 | 最常见限制 |
max user processes (-u) |
≈ 64k | 根据内存计算 |
stack size (-s) |
8192 KB | 线程栈 |
core file size (-c) |
0 | 默认不产生 core |
file size (-f) |
unlimited | 不限制文件大小 |
virtual memory (-v) |
unlimited | |
cpu time (-t) |
unlimited | |
max locked memory (-l) |
64 KB |
⚠️ 实际值可能受 systemd / PAM / 容器 影响。
Debian 使用 PAM 控制用户资源限制:
/etc/security/limits.conf
/etc/security/limits.d/*.conf
示例:
* soft nofile 1024
* hard nofile 4096
生效条件:
pam_limits.so如果是 systemd 启动的服务,PAM 不生效,而是使用 systemd 设置。
查看系统级默认值:
systemctl show --property=DefaultLimitNOFILE
常见输出:
DefaultLimitNOFILE=1024:524288
服务单独设置:
[Service]
LimitNOFILE=65535
查看 hard / soft:
ulimit -Sn # soft
ulimit -Hn # hard
| 版本 | open files 默认值 |
|---|---|
| Debian 9 | 1024 |
| Debian 10 | 1024 |
| Debian 11 | 1024 |
| Debian 12 | 1024(systemd 可能更高) |
systemd 在新版本中 默认允许更高 hard limit,但 shell 仍显示 1024。
ulimit 可能显示:
open files = 10485761024(取决于启动参数)sudo vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
重新登录生效。
sudo systemctl edit nginx
[Service]
LimitNOFILE=65535
Debian 默认 ulimit:
open files:1024max user processes:≈ 64k- 实际值受 PAM / systemd / 启动方式 影响
如果你愿意,可以告诉我:
nofile)我可以给你 最合适、最安全的配置方案。