温馨提示×

debian ulimit重启会重置吗

小樊
43
2026-09-07 01:39:17
栏目: 智能运维

在 Debian(以及大多数 Linux 发行版)里,ulimit 设置重启后是否会重置,取决于你是怎么设置的


一、分情况说明

1️⃣ 只在当前 shell 里用 ulimit 命令设置

ulimit -n 65535

重启后一定会重置

原因:

  • ulimitshell 级别的进程限制
  • 只对当前 session 及其子进程有效
  • 系统重启后,所有进程重新创建,限制恢复为默认值

2️⃣ 写在 ~/.bashrc / ~/.profile

ulimit -n 65535

重启后“不会自动全局生效”,但登录后会生效

限制:

  • 只对交互式登录 shell有效
  • 对 systemd 服务、守护进程 无效
  • 不同用户互不影响

3️⃣ 使用 /etc/security/limits.conf

* soft nofile 65535
* hard nofile 65535

重启后仍然有效(推荐方式)

前提:

  • 使用 PAM 的登录方式(SSH、su、login)
  • systemd 服务 不读这个文件

示例:

# 修改后重新登录
ulimit -n

4️⃣ systemd 服务(重点)

如果你的程序是 systemd 服务

[Service]
LimitNOFILE=65535

limits.conf 对 systemd 服务无效

需要:

  • 在 service 文件里设置
  • 或全局配置:
# /etc/systemd/system.conf
DefaultLimitNOFILE=65535

然后:

systemctl daemon-reexec

5️⃣ 内核参数(不是 ulimit)

sysctl -w fs.file-max=100000

✅ 重启会失效
✅ 写入 /etc/sysctl.conf 后重启仍生效


二、结论速查表

设置方式 重启是否保留 生效范围
ulimit 命令 ❌ 否 当前 shell
.bashrc ⚠️ 登录后 当前用户
limits.conf ✅ 是 登录用户
systemd Limit ✅ 是 服务
sysctl ❌(不写文件) 系统级

三、推荐做法(最常见)

  • 普通用户限制/etc/security/limits.conf
  • 服务程序 → systemd Limit*
  • 不要指望 ulimit 命令持久化

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

  • 用户进程 还是 服务
  • Debian 版本(11 / 12)
  • 具体限制(nofile / nproc / stack 等)

我可以给你精确配置示例

0