在 Ubuntu(以及其它 Linux 发行版)中,ulimit 是用于限制用户进程或 shell 会话所能使用的系统资源的命令和机制。
简单来说:
ulimit = 给用户或进程“设定资源使用上限”
常见可限制的资源包括:
| 资源 | 说明 |
|---|---|
| 最大文件大小 | 单个文件能写多大 |
| 最大进程数 | 一个用户最多能开多少进程 |
| 最大打开文件数 | 同时能打开多少文件(很常用) |
| 最大内存占用 | 可使用多少内存 |
| CPU 时间 | 进程最多用多少 CPU 时间 |
| 栈大小 | 线程/函数调用栈大小 |
| core 文件大小 | 程序崩溃时是否生成 core dump |
ulimit -a
示例输出:
core file size (blocks, -c) 0
max memory size (kbytes, -m) unlimited
open files (-n) 1024
max user processes (-u) 31234
ulimit -n 65535 # 打开文件数
ulimit -u 4096 # 最大进程数
ulimit -s 8192 # 栈大小
⚠️ 重启或新开 shell 后失效
/etc/security/limits.confsudo vim /etc/security/limits.conf
示例:
* soft nofile 65535
* hard nofile 65535
含义:
*:所有用户soft / hard:软/硬限制nofile:打开文件数✅ 需要 重新登录 才生效
如果是 服务进程(如 Nginx、MySQL):
sudo systemctl edit nginx
[Service]
LimitNOFILE=65535
然后:
sudo systemctl daemon-reload
sudo systemctl restart nginx
nofile)max user processes)ulimit 是 Linux 用来限制“用户或进程能用多少资源”的安全与性能工具
如果你有具体场景(比如 MySQL、Docker、Python、Nginx),我可以给你针对性配置示例。