温馨提示×

debian ulimit怎样查配置

小樊
33
2026-09-16 02:57:45
栏目: 智能运维

在 Debian(以及大多数 Linux 发行版)里,ulimit 相关配置通常来自 shell 限制系统/服务限制(PAM + systemd) 两部分。下面按常见场景说明怎么查。


一、查看当前 shell 的 ulimit

1. 查看所有限制

ulimit -a

示例输出:

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
file size               (blocks, -f) unlimited
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 31234
virtual memory          (kbytes, -v) unlimited

2. 查看单项限制

ulimit -n   # 打开文件数
ulimit -u   # 最大进程数
ulimit -s   # 栈大小

注意:

  • ulimit 只显示当前 shell 会话的限制
  • 非 root 用户只能调小,不能调大

二、查看配置文件(永久限制)

1. /etc/security/limits.conf

这是最常见的用户级限制配置文件:

cat /etc/security/limits.conf

示例:

*               soft    nofile          65535
*               hard    nofile          65535
www-data        soft    nproc           4096

字段含义:

用户/组    soft/hard    资源类型    值

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

Debian 通常会加载该目录下的配置:

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

三、确认 PAM 是否生效(很重要)

limits.conf 只有通过 PAM 才会生效。

检查是否有这一行:

grep pam_limits /etc/pam.d/common-session
grep pam_limits /etc/pam.d/common-session-noninteractive

应该有:

session required pam_limits.so

⚠️ 如果是 systemd 服务,limits.conf 可能不生效


四、查看 systemd 服务的 ulimit

1. 查看某个服务的限制

systemctl show nginx | grep Limit

示例:

LimitNOFILE=65535
LimitNPROC=512

2. systemd 全局配置

/etc/systemd/system.conf
/etc/systemd/user.conf

相关项:

DefaultLimitNOFILE=65535
DefaultLimitNPROC=4096

修改后需:

systemctl daemon-reexec

五、查看进程实际生效的 ulimit

1. 通过 /proc

cat /proc/<PID>/limits

例如:

cat /proc/$(pgrep nginx | head -1)/limits

六、常见误区总结

场景 是否生效
SSH 登录用户 limits.conf ✅
su 切换用户 需 pam_limits ✅
systemd 服务 limits.conf ❌(看 systemd)
docker 容器 看宿主机 + docker 配置

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

  • 用户登录 还是 服务(nginx/mysql等)
  • 想查的是 nofile / nproc / 其他

我可以给你更精确的命令。

0