在 Debian(以及大多数 Linux 发行版)中,ulimit 用于限制 shell 及其启动的进程所占用的系统资源。它分为:
通过 ulimit -a 可查看当前所有限制。
| 参数 | 含义 | 说明 |
|---|---|---|
-a |
显示所有限制 | 最常用 |
-c |
core 文件大小 | 单位:blocks(0 表示不生成 core) |
-d |
数据段大小 | 进程数据区上限 |
-f |
文件大小 | 可创建的最大文件 |
-l |
锁定内存大小 | mlock 使用的内存 |
-m |
常驻内存 | 部分系统已废弃 |
-n |
打开文件描述符数 | 非常常用 |
-p |
管道大小 | 单位:512 字节 |
-s |
栈大小 | 线程栈空间 |
-t |
CPU 时间 | 单位:秒 |
-u |
用户最大进程数 | 同用户并发进程数 |
-v |
虚拟内存大小 | 包含 swap |
-x |
锁文件数 | 某些系统支持 |
-e |
调度优先级 | nice 下限 |
-i |
待处理信号数 | 实时信号 |
-q |
POSIX 消息队列 | 字节数 |
-r |
实时优先级 | 实时调度上限 |
不同 shell(
bash/zsh/sh)支持略有差异。
ulimit -a
ulimit -n 65535
ulimit -u 4096
ulimit -c unlimited
/etc/security/limits.conf* soft nofile 65535
* hard nofile 65535
www-data hard nproc 1024
需配合 PAM:
/etc/pam.d/common-session
session required pam_limits.so
[Service]
LimitNOFILE=65535
LimitNPROC=4096
cat /proc/sys/fs/file-max
sysctl fs.file-max
如果你有具体使用场景(如:Web 服务器、数据库、Docker),我可以给你一份推荐的 ulimit 配置。