在 Debian(以及大多数 Linux 发行版)里,ulimit 是可以改的,但要注意「改哪里、改谁、改什么、能不能永久生效」这几个问题。
ulimit 用来限制当前 shell 及其子进程的资源使用,比如:
⚠️ 注意:ulimit 是“进程级/会话级”的限制,不是系统全局参数(系统级是 /proc/sys/ 或 sysctl)。
在终端直接执行:
ulimit -n 65535 # 修改最大打开文件数
ulimit -u 4096 # 修改最大用户进程数
ulimit -c unlimited # 允许 core dump
查看当前限制:
ulimit -a
❗ 只对当前 shell 和子进程有效,退出登录就失效。
/etc/security/limits.conf这是 最常用、最标准 的方式。
编辑:
sudo vim /etc/security/limits.conf
示例:
* soft nofile 65535
* hard nofile 65535
www-data soft nproc 4096
www-data hard nproc 4096
说明:
soft:软限制(可临时超过,但会被拦)hard:硬限制(不能超过)* 表示所有用户⚠️ 生效条件:
如果你用的是 systemd 服务(如 nginx / mysql / docker),limits.conf 可能不生效!
需要在 service 文件里加:
[Service]
LimitNOFILE=65535
LimitNPROC=4096
然后:
sudo systemctl daemon-reexec
sudo systemctl restart xxx
查看某个服务的限制:
systemctl show -p LimitNOFILE nginx
/etc/profile
~/.bashrc
里面加 ulimit 命令,只对交互 shell 有效。
❌ 改了 limits.conf 但服务没生效 → systemd
❌ Docker 容器里 ulimit 不起作用 → 需要在 docker run 加 --ulimit
❌ 修改后 ulimit -n 没变 → 没重新登录 / 不是同一会话
Debian 的 ulimit 能改,临时用命令,永久用
limits.conf+ systemd,服务一定要看 systemd。
如果你能说下:
我可以给你精确到配置文件的写法。