在 CentOS(以及大多数 Linux 发行版)中,ulimit 是用于控制 shell 及其启动的进程所能使用的系统资源上限的命令和机制。
ulimit 是 user limit 的缩写,用来设置或查看:当前 shell 会话中,用户进程可以使用的最大资源限制。
它是 针对用户级别 的限制,不是针对某一条命令或某个程序的永久限制。
注意:ulimit 设置只影响当前 shell 及其子进程。
常用限制项包括:
| 资源 | 说明 |
|---|---|
-n |
打开文件描述符最大数量(file descriptors) |
-u |
用户最大进程数 |
-c |
core 文件大小 |
-s |
栈大小 |
-m |
内存使用限制(很多系统已忽略) |
-v |
虚拟内存限制 |
-t |
CPU 时间 |
-f |
文件最大大小 |
ulimit -a
示例输出:
core file size (blocks, -c) 0
max user processes (-u) 4096
open files (-n) 1024
ulimit -n # 文件描述符
ulimit -u # 进程数
ulimit -n 65535
⚠️ 只对当前 shell 生效,重启或新开终端后失效。
/etc/security/limits.conf编辑文件:
vi /etc/security/limits.conf
示例:
* soft nofile 65535
* hard nofile 65535
* soft nproc 4096
* hard nproc 4096
说明:
soft:软限制(可临时超过,但会警告)hard:硬限制(不能超过)*:所有用户(也可写用户名)需要 重新登录 才生效。
如果是 systemd 启动的服务(如 Nginx、MySQL):
vi /etc/systemd/system/nginx.service
添加:
[Service]
LimitNOFILE=65535
然后:
systemctl daemon-reload
systemctl restart nginx
常见场景:
通常要调大:
nofile
nproc
❌ ulimit 能限制整个系统
✅ 只能限制用户进程
❌ 修改后立即全局生效
✅ 需要重新登录或重启服务
❌ root 也无限制
✅ root 也受 ulimit 限制(除非修改)
如果你愿意,我可以:
你可以告诉我你的 CentOS 版本和使用场景。