温馨提示×

如何查看Debian ulimit

小樊
44
2026-07-11 23:49:58
栏目: 智能运维

在 Debian(以及大多数 Linux 发行版)中,ulimit 是用来查看或设置 shell 资源限制 的命令。下面按常见场景说明如何查看。


一、查看当前 shell 的 ulimit(最常用)

1️⃣ 查看所有资源限制

ulimit -a

示例输出:

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
file size               (blocks, -f) unlimited
open files                      (-n) 1024
max user processes              (-u) 256
...

2️⃣ 查看单个资源限制

资源 查看命令
最大打开文件数 ulimit -n
最大进程数 ulimit -u
core dump 大小 ulimit -c
栈大小 ulimit -s
虚拟内存 ulimit -v

示例:

ulimit -n

二、区分 soft limit 和 hard limit

  • soft limit:当前生效限制
  • hard limit:soft 的上限(普通用户不能超)

查看 soft limit

ulimit -S -n

查看 hard limit

ulimit -H -n

三、查看某个正在运行进程的 ulimit

方法 1:通过 /proc

cat /proc/<PID>/limits

示例:

cat /proc/1234/limits

输出非常详细,包括:

  • Max open files
  • Max processes
  • Stack size
  • Core dump

这是最准确的方法


四、查看系统级限制(不是 ulimit)

1️⃣ 系统最大打开文件数

cat /proc/sys/fs/file-max

2️⃣ 当前已打开文件数

cat /proc/sys/fs/file-nr

五、Debian 中 ulimit 的配置位置

1️⃣ 临时设置(仅当前 shell)

ulimit -n 65535

⚠️ 重启或新 shell 失效


2️⃣ 永久设置(用户级)

编辑:

/etc/security/limits.conf

示例:

* soft nofile 65535
* hard nofile 65535

或指定用户:

www-data soft nproc 4096
www-data hard nproc 4096

⚠️ 需要 PAM 支持,通常 Debian 默认已启用


3️⃣ systemd 服务(Debian 8+)

如果是 systemd 启动的服务,ulimit 不生效,需要:

systemctl edit <service>

添加:

[Service]
LimitNOFILE=65535
LimitNPROC=4096

然后:

systemctl restart <service>

六、常见问题

❓ 为什么 ulimit -a 和 /proc/PID/limits 不一样?

  • ulimit 只影响 当前 shell
  • systemd / Docker / 服务管理器 会覆盖设置

❓ Docker 容器里 ulimit 不生效?

需要在宿主机或 Docker 启动参数中设置:

docker run --ulimit nofile=65535:65535

七、快速总结

需求 命令
查看当前 shell ulimit -a
查看进程限制 cat /proc/PID/limits
查看系统最大文件数 cat /proc/sys/fs/file-max
永久修改 /etc/security/limits.conf
systemd 服务 systemctl edit

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

  • 你用的是 Debian 几?
  • 普通用户 / root / Docker / systemd 服务?
  • 想调的是 文件数 / 进程数 / 内存?

我可以给你更精确的配置方案。

0