温馨提示×

Debian ulimit如何永久生效

小樊
48
2026-08-06 23:27:31
栏目: 智能运维

在 Debian(以及大多数 Linux 发行版)中,ulimit永久生效取决于你想对在什么场景下生效。下面按常见场景详细说明。


一、对「所有用户」永久生效(推荐方式)

✅ 使用 /etc/security/limits.conf

这是最标准、最常用的方式。

1️⃣ 编辑配置文件

sudo nano /etc/security/limits.conf

在文件末尾添加,例如:

*    soft    nofile    65535
*    hard    nofile    65535

说明:

  • *:所有用户(也可指定用户名)
  • soft:软限制(用户可自行修改)
  • hard:硬限制(不能超过)
  • nofile:最大打开文件数

其他常见项:

*    soft    nproc    65535
*    hard    nproc    65535

2️⃣ 确保 PAM 启用 limits

检查 /etc/pam.d/common-session/etc/pam.d/common-session-noninteractive 中是否包含:

session required pam_limits.so

一般 Debian 默认已启用

3️⃣ 重新登录或重启

logout
# 或
reboot

验证:

ulimit -n

二、对「systemd 服务」永久生效(非常重要)

⚠️ systemd 不会读取 limits.conf

✅ 方法 1:修改 systemd 全局配置

sudo nano /etc/systemd/system.conf

添加或修改:

DefaultLimitNOFILE=65535
DefaultLimitNPROC=65535

然后:

sudo systemctl daemon-reexec
sudo reboot

✅ 方法 2:只针对某个服务

sudo systemctl edit nginx

写入:

[Service]
LimitNOFILE=65535
LimitNPROC=65535

保存后:

sudo systemctl restart nginx

三、对「当前用户」永久生效(不推荐全局)

在 shell 配置文件中(仅对交互式 shell 有效)

nano ~/.bashrc

添加:

ulimit -n 65535
ulimit -u 65535

⚠️ 注意:

  • 不会影响 systemd 服务
  • 不会对所有程序生效
  • 可能被 PAM 覆盖

四、对「root 用户」特别说明

Debian 中 root 默认不受 limits.conf 限制,除非:

root    soft    nofile    65535
root    hard    nofile    65535

五、验证是否生效

ulimit -a
ulimit -n
ulimit -u

或查看进程限制:

cat /proc/<PID>/limits

六、常见坑总结

问题 原因
修改 limits.conf 不生效 没重新登录 / systemd 服务
systemd 服务不生效 systemd 不读 limits.conf
su / sudo 后不生效 PAM 配置问题
Docker 容器不生效 宿主机或 systemd 限制

七、推荐最佳实践 ✅

场景 推荐方式
普通用户 /etc/security/limits.conf
系统服务 systemctl edit
全局服务 /etc/systemd/system.conf
Shell 脚本 ~/.bashrc(仅辅助)

如果你能说明:

  • Debian 版本(10 / 11 / 12)
  • 生效对象(用户 / 服务 / Docker / 数据库)
  • 具体 ulimit 项(nofile / nproc / core / stack)

我可以给你精确到命令级别的配置方案。

0