温馨提示×

centos ulimit是什么

小樊
37
2026-09-11 23:55:12
栏目: 智能运维

在 CentOS(以及大多数 Linux 发行版)中,ulimit 是用于控制 shell 及其启动的进程所能使用的系统资源上限的命令和机制。


一、ulimit 是什么?

ulimit 是 user limit 的缩写,用来设置或查看:当前 shell 会话中,用户进程可以使用的最大资源限制。

它是 针对用户级别 的限制,不是针对某一条命令或某个程序的永久限制。

注意:ulimit 设置只影响当前 shell 及其子进程。


二、常见可限制的资源

常用限制项包括:

资源 说明
-n 打开文件描述符最大数量(file descriptors)
-u 用户最大进程数
-c core 文件大小
-s 栈大小
-m 内存使用限制(很多系统已忽略)
-v 虚拟内存限制
-t CPU 时间
-f 文件最大大小

三、查看 ulimit

1. 查看所有限制

ulimit -a

示例输出:

core file size          (blocks, -c) 0
max user processes      (-u) 4096
open files              (-n) 1024

2. 查看单个限制

ulimit -n   # 文件描述符
ulimit -u   # 进程数

四、修改 ulimit(临时)

示例:修改打开文件数

ulimit -n 65535

⚠️ 只对当前 shell 生效,重启或新开终端后失效。


五、永久修改 ulimit(CentOS)

方法 1:/etc/security/limits.conf

编辑文件:

vi /etc/security/limits.conf

示例:

* soft nofile 65535
* hard nofile 65535
* soft nproc 4096
* hard nproc 4096

说明:

  • soft:软限制(可临时超过,但会警告)
  • hard:硬限制(不能超过)
  • *:所有用户(也可写用户名)

需要 重新登录 才生效。


方法 2:systemd 服务(CentOS 7+)

如果是 systemd 启动的服务(如 Nginx、MySQL):

vi /etc/systemd/system/nginx.service

添加:

[Service]
LimitNOFILE=65535

然后:

systemctl daemon-reload
systemctl restart nginx

六、ulimit 和服务器优化的关系

常见场景:

  • 高并发服务(Nginx、Redis、Java)
  • 数据库
  • 大量连接或文件

通常要调大:

nofile
nproc

七、常见误区

❌ ulimit 能限制整个系统
✅ 只能限制用户进程

❌ 修改后立即全局生效
✅ 需要重新登录或重启服务

❌ root 也无限制
✅ root 也受 ulimit 限制(除非修改)


如果你愿意,我可以:

  • 帮你 看 CentOS 当前 ulimit 配置
  • 给你一套 高并发服务器 ulimit 推荐值
  • 解释 nofile / nproc 区别

你可以告诉我你的 CentOS 版本和使用场景。

0 踩