在 CentOS(以及其他 Linux 发行版)中,ulimit 用于限制单个用户或进程可以使用的系统资源,防止某个程序或用户占用过多资源,影响系统稳定性。
下面从「作用、常见限制项、使用方式、注意事项」几个方面说明。
主要作用:
常用参数(ulimit -a 可查看):
| 参数 | 含义 | 说明 |
|---|---|---|
-n |
文件描述符(fd) | 打开文件 / socket 数量 |
-u |
最大进程数 | 用户能创建的进程数 |
-m |
最大内存 | 常不生效(被 cgroup 替代) |
-v |
虚拟内存 | |
-c |
core 文件大小 | 程序崩溃时是否生成 core |
-s |
栈大小 | 线程栈 |
-t |
CPU 时间 | 秒 |
-f |
文件大小 | 单文件最大 |
示例:
ulimit -n
查看当前用户最多能打开多少文件。
ulimit -a
ulimit -n 65535
ulimit -u 4096
⚠️ 重启或新开终端后失效
vim /etc/security/limits.conf
示例:
* soft nofile 65535
* hard nofile 65535
* soft nproc 4096
* hard nproc 4096
含义:
soft:警告值hard:硬限制*:所有用户(也可写用户名)需要重新登录生效
如果是 systemd 启动的服务:
vim /etc/systemd/system/xxx.service
[Service]
LimitNOFILE=65535
LimitNPROC=4096
然后:
systemctl daemon-reload
systemctl restart xxx
ulimit -n 65535
否则容易报:
Too many open files
限制用户进程数:
* hard nproc 1000
允许生成 core 文件:
ulimit -c unlimited
ulimit 只对当前用户会话或进程有效如果你愿意,我可以: