温馨提示×

centos ulimit能限制什么

小樊
41
2026-10-14 20:43:27
栏目: 智能运维

在 CentOS(以及其它 Linux 发行版)中,ulimit 用于限制单个用户或单个进程在系统资源上的使用上限,主要由 shell 及 PAM/系统配置控制。它不能直接限制整个系统,只针对用户会话 / 进程。

下面按类别说明 ulimit 能限制什么:


一、常见可限制的资源(最常用)

1️⃣ 文件相关

  • -f:单个文件最大大小(blocks)
  • -n:进程可打开的最大文件描述符数
  • -c:core 文件最大大小(用于调试)
  • -d:进程数据段最大大小
  • -s:线程栈大小
  • -m / -v:内存使用(部分系统不生效)

2️⃣ 进程 / 线程相关

  • -u:用户可创建的最大进程数
  • -T:最大线程数(部分 CentOS 版本支持)
  • -t:CPU 时间(秒)

3️⃣ 内存 / 地址空间

  • -v:虚拟内存上限
  • -l:可锁定的内存(如 mlock)
  • -m:常驻内存(RSS,很多系统忽略)

4️⃣ 信号 / IPC

  • -q:POSIX 消息队列大小
  • -e:最大调度优先级
  • -r:实时优先级

5️⃣ 其他

  • -p:管道大小(通常只读)
  • -i:挂起信号数量

二、ulimit 能“限制谁”

✅ 能限制:

  • 某个 shell 启动的所有进程
  • 某个 系统用户
  • 某个 服务(通过 systemd / PAM)

❌ 不能限制:

  • 整个系统的总资源
  • 其他用户的进程
  • 内核本身

三、在 CentOS 中常见使用方式

1️⃣ 当前 shell 查看

ulimit -a

2️⃣ 临时修改(只对当前会话有效)

ulimit -n 65535
ulimit -u 4096

3️⃣ 永久生效(用户级)

编辑:

/etc/security/limits.conf

示例:

* soft nofile 65535
* hard nofile 65535

4️⃣ systemd 服务限制

[Service]
LimitNOFILE=65535
LimitNPROC=4096

四、典型使用场景

  • 高并发服务(Nginx / Redis):nofile
  • 防止 fork 炸弹:-u
  • 限制异常程序内存:-v
  • 调试程序:-c

如果你愿意,我可以:

  • 给你 CentOS 7 / 8 的区别
  • 讲 ulimit 不生效的常见原因
  • 针对 某个服务(如 MySQL / Java)给具体配置

你更关心哪一块?

0 踩