温馨提示×

debian ulimit在哪里配置

小樊
51
2026-09-28 04:11:44
栏目: 智能运维

在 Debian 里,ulimit(实际是 shell 内建命令,控制的是 per-process 资源限制)可以从多个地方配置,取决于你是想:

  • 只对当前 shell / 用户会话生效
  • 对某个用户或所有用户登录时生效
  • 对**系统服务(systemd)**生效

下面按常见场景说明。


1. 当前 shell 临时设置(不持久)

ulimit -n 65535
ulimit -u 4096

查看当前限制:

ulimit -a

⚠️ 只在当前 shell 及其子进程有效,重启或新登录失效。


2. 用户登录时生效(PAM + limits.conf)✅ 最常用

配置文件

/etc/security/limits.conf

示例:

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

子配置目录(推荐)

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

例如:

/etc/security/limits.d/90-custom.conf

生效条件(很重要)

必须启用 PAM:

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

应包含:

session required pam_limits.so

✅ 适用于:

  • ssh 登录
  • su / sudo
  • 普通用户 shell

❌ 不适用于 systemd 服务(见第 4 点)


3. systemd 用户级(user service)

如果是 systemd user session:

~/.config/systemd/user.conf

或

/etc/systemd/user.conf

示例:

[Manager]
DefaultLimitNOFILE=65535

4. systemd 系统服务(非常重要)

limits.conf 不会影响 systemd 服务

方法 A:在 service 文件里写

[Service]
LimitNOFILE=65535
LimitNPROC=4096

然后:

systemctl daemon-reload
systemctl restart xxx

方法 B:全局 systemd 默认

/etc/systemd/system.conf
DefaultLimitNOFILE=65535

修改后需重启系统或 systemctl daemon-reexec


5. 内核级硬上限(极少改)

某些资源受内核参数限制:

/proc/sys/fs/file-max

临时:

sysctl -w fs.file-max=1000000

持久:

/etc/sysctl.conf
fs.file-max=1000000

快速对照表

场景 配置位置
临时 ulimit
用户登录 /etc/security/limits.conf
用户 systemd user.conf
系统服务 .service 或 system.conf
内核上限 sysctl

如果你能说明:

  • Debian 版本(如 11 / 12)
  • 想限制谁(用户 / 服务 / docker)
  • 限制什么(nofile / nproc / core)

我可以直接给你精确配置示例。

0 踩