在 Debian(以及大多数 Linux 发行版)中,ulimit 用于限制当前 shell 及其子进程的资源使用。下面按临时修改的常见场景说明。
ulimit -a
常用单项查看:
ulimit -n # 文件描述符
ulimit -u # 最大进程数
ulimit -s # 栈大小
ulimit -n 65535
ulimit -u 4096
ulimit -s 8192
✅ 特点
hard limit)-H / -S 区分硬限制和软限制ulimit -Hn # 查看硬限制
ulimit -Sn # 查看软限制
设置:
ulimit -Sn 65535
ulimit -Hn 65535
⚠️ 普通用户 不能提高硬限制,只能降低。
sudo -i
ulimit -n 65535
su - your_user
或直接:
sudo sh -c "ulimit -n 65535 && your_command"
#!/bin/bash
ulimit -n 65535
./my_program
⚠️ 注意:
ulimit 只对当前 shell 生效sudo ./script.sh,要确保 sudo 没有被限制报错:
bash: ulimit: open files: cannot modify limit: Operation not permitted
解决:
/etc/security/limits.confulimit 对 systemd 服务无效
✅ 正确方式:
# /etc/systemd/system/xxx.service
[Service]
LimitNOFILE=65535
LimitNPROC=4096
然后:
sudo systemctl daemon-reload
sudo systemctl restart xxx
| 方式 | 生效范围 | 是否重启失效 |
|---|---|---|
ulimit |
当前 shell | ✅ |
limits.conf |
用户登录 | ❌ |
| systemd service | 指定服务 | ❌ |
sysctl |
内核参数 | ❌ |
ulimit ✅limits.conf 或 systemd如果你能说明:
我可以给你最精确的修改方案。