温馨提示×

Debian ulimit默认值多少

小樊
45
2026-07-11 23:47:49
栏目: 智能运维

在 Debian 系统中,ulimit 的默认值取决于 具体的资源类型系统版本启动方式(登录 shell / systemd / 服务) 以及 PAM 配置。下面给你一个清晰、实用的说明。


一、查看当前 shell 的 ulimit 默认值

在终端中执行:

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

二、Debian 中的常见默认值(典型情况)

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 中 ulimit 从哪里来?

1️⃣ PAM(登录用户)

Debian 使用 PAM 控制用户资源限制:

/etc/security/limits.conf
/etc/security/limits.d/*.conf

示例:

* soft nofile 1024
* hard nofile 4096

生效条件:

  • 通过 login / ssh / su 登录
  • PAM 加载 pam_limits.so

2️⃣ systemd(服务 & 系统级)

如果是 systemd 启动的服务,PAM 不生效,而是使用 systemd 设置。

查看系统级默认值:

systemctl show --property=DefaultLimitNOFILE

常见输出:

DefaultLimitNOFILE=1024:524288

服务单独设置:

[Service]
LimitNOFILE=65535

3️⃣ root 与普通用户差异

  • root 通常不受 soft limit 限制
  • 普通用户 不能超过 hard limit

查看 hard / soft:

ulimit -Sn   # soft
ulimit -Hn   # hard

四、Debian 10 / 11 / 12 的差异

版本 open files 默认值
Debian 9 1024
Debian 10 1024
Debian 11 1024
Debian 12 1024(systemd 可能更高)

systemd 在新版本中 默认允许更高 hard limit,但 shell 仍显示 1024。


五、容器 / Docker 中的特殊情况

  • Docker 容器 继承宿主机或运行时限制
  • 容器内 ulimit 可能显示:
    • open files = 1048576
    • 1024(取决于启动参数)

六、如何永久修改 Debian 的 ulimit

✅ 方法 1:limits.conf(用户登录)

sudo vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535

重新登录生效。


✅ 方法 2:systemd(服务)

sudo systemctl edit nginx
[Service]
LimitNOFILE=65535

七、一句话总结

Debian 默认 ulimit:

  • open files1024
  • max user processes≈ 64k
  • 实际值受 PAM / systemd / 启动方式 影响

如果你愿意,可以告诉我:

  • Debian 版本
  • shell / 服务 / Docker / 服务器
  • 想调哪个参数(如 nofile

我可以给你 最合适、最安全的配置方案

0