在 Debian(以及大多数 Linux 发行版)中,ulimit 是 shell 内建命令,用于设置当前 shell 及其子进程的资源限制。要“针对用户设置”,常见做法有几种,按推荐程度从高到低说明。
/etc/security/limits.conf(最常用)这是 针对用户/用户组 设置 ulimit 的标准方式。
sudo vim /etc/security/limits.conf
格式:
<domain> <type> <item> <value>
示例:
# 限制用户 testuser 打开文件数
testuser soft nofile 65535
testuser hard nofile 100000
# 限制用户组 dev
@dev soft nproc 4096
@dev hard nproc 8192
说明:
soft:软限制(用户可自行调整,但不能超过 hard)hard:硬限制(只有 root 可改)nofile:最大打开文件数nproc:最大进程数检查 /etc/pam.d/common-session 或登录相关文件包含:
session required pam_limits.so
通常 Debian 默认已启用。
su - testuser
ulimit -a
⚠️ 注意:
如果你的程序是通过 systemd 启动的,limits.conf 不会生效。
sudo vim /etc/systemd/system.conf
添加或修改:
DefaultLimitNOFILE=65535
DefaultLimitNPROC=4096
然后:
sudo systemctl daemon-reexec
sudo systemctl edit myservice
添加:
[Service]
LimitNOFILE=65535
LimitNPROC=4096
例如 ~/.bashrc 或 ~/.profile:
ulimit -n 65535
ulimit -u 4096
⚠️ 问题:
sudo ulimit -n 65535
⚠️ 注意:
ulimit 是 shell 内建命令,sudo ulimit 通常无效sudo bash -c "ulimit -n 65535; your_command"
ulimit -a
ulimit -n
ulimit -u
查看系统级最大限制:
cat /proc/sys/fs/file-max
✅ 登录用户
/etc/security/limits.conf✅ systemd 服务
systemctl edit 或 system.conf✅ 容器 / Docker
run 或 docker-compose 中设置pam_limits.soroot如果你愿意,可以告诉我:
我可以给你一份精确可用的配置示例。