在 Debian(以及其它 Linux 发行版)中,ulimit 用于限制当前 shell 及其子进程可使用的系统资源。它实际上是对 PAM / shell / systemd 等层面资源限制(RLIMIT_*)的封装。
可以通过 ulimit -a 查看当前会话的所有限制项。
执行:
ulimit -a
典型输出包含以下项目(不同架构/内核版本略有差异):
| 项目 | 含义 | 对应选项 |
|---|---|---|
| core file size | core 文件最大大小 | -c |
| data seg size | 数据段最大大小 | -d |
| scheduling priority | 调度优先级(nice 范围) | -e |
| file size | 单个文件最大大小 | -f |
| pending signals | 待处理信号数量 | -i |
| max locked memory | 可锁定内存大小 | -l |
| max memory size | 常驻内存最大大小 | -m |
| open files | 打开文件描述符数 | -n |
| pipe size | 管道缓冲区大小 | -p |
| POSIX message queues | POSIX 消息队列大小 | -q |
| real-time priority | 实时调度优先级 | -r |
| stack size | 栈大小 | -s |
| cpu time | CPU 使用时间 | -t |
| max user processes | 用户最大进程数 | -u |
| virtual memory | 虚拟内存大小 | -v |
| file locks | 文件锁数量 | -x |
ulimit -a
ulimit -n # 打开文件数
ulimit -u # 进程数
ulimit -n 65535
ulimit -u 4096
⚠️ 修改后只在当前 shell 生效,重启或新登录失效。
/etc/security/limits.conf最常见方式(PAM 限制):
* soft nofile 65535
* hard nofile 65535
* soft nproc 4096
* hard nproc 4096
/etc/security/limits.d/*.confDebian 推荐放在这里。
如果是 systemd 服务:
[Service]
LimitNOFILE=65535
LimitNPROC=4096
ulimit -Sn # soft
ulimit -Hn # hard
如果你愿意,我可以: