温馨提示×

如何重置Debian ulimit

小樊
40
2026-07-23 21:14:53
栏目: 智能运维

在 Debian 系统中,重置(或修改)ulimit 通常指调整 shell 或系统对进程资源使用的限制(如打开文件数、进程数等)。下面按常见场景给你完整说明。


一、临时重置(仅当前 shell 会话)

1️⃣ 查看当前 ulimit

ulimit -a

常用参数:

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

2️⃣ 临时修改 ulimit(立即生效,重启失效)

ulimit -n 65535
ulimit -u 4096

⚠️ 注意:

  • 普通用户 只能调小或保持,不能调大超过系统限制
  • root 用户可自由调整

二、永久重置(推荐方式)

✅ 方法 1:修改 /etc/security/limits.conf

编辑文件:

sudo nano /etc/security/limits.conf

在文件末尾添加(示例):

* soft nofile 65535
* hard nofile 65535
* soft nproc 4096
* hard nproc 4096

说明:

  • *:所有用户(可替换为用户名)
  • soft:软限制(警告)
  • hard:硬限制(不可超过)
  • nofile:打开文件数
  • nproc:进程数

重新登录后生效


✅ 方法 2:使用 /etc/security/limits.d/(推荐)

Debian 推荐方式,避免直接改主文件:

sudo nano /etc/security/limits.d/99-custom.conf

内容同上:

* soft nofile 65535
* hard nofile 65535

三、systemd 服务的 ulimit(非常重要)

⚠️ systemd 服务不受 limits.conf 影响

查看服务当前限制

systemctl show <service> | grep Limit

修改服务限制

编辑 service 文件:

sudo systemctl edit <service>

添加:

[Service]
LimitNOFILE=65535
LimitNPROC=4096

然后:

sudo systemctl daemon-reload
sudo systemctl restart <service>

四、系统级全局限制(内核参数)

1️⃣ 最大文件句柄数

cat /proc/sys/fs/file-max

临时修改:

sudo sysctl -w fs.file-max=1000000

永久修改:

sudo nano /etc/sysctl.conf

添加:

fs.file-max = 1000000

生效:

sudo sysctl -p

五、常见问题排查

❓ ulimit 修改后不生效?

检查:

  1. 是否重新登录
  2. 是否被 systemd 覆盖
  3. 是否超过硬限制
  4. PAM 是否启用:
grep pam_limits /etc/pam.d/common-session

应有:

session required pam_limits.so

六、快速总结

场景 方法
临时测试 ulimit -n 65535
用户永久 /etc/security/limits.conf
systemd 服务 systemctl edit
内核级 sysctl.conf

如果你能说明 具体用途(如:Docker / MySQL / Nginx / 高并发服务),我可以给你精确配置方案

0