温馨提示×

ubuntu ulimit是什么

小樊
45
2026-10-05 14:26:16
栏目: 智能运维

在 Ubuntu(以及其它 Linux 发行版)中,ulimit 是用于限制用户进程或 shell 会话所能使用的系统资源的命令和机制。

简单来说:

ulimit = 给用户或进程“设定资源使用上限”


一、ulimit 能限制什么?

常见可限制的资源包括:

资源 说明
最大文件大小 单个文件能写多大
最大进程数 一个用户最多能开多少进程
最大打开文件数 同时能打开多少文件(很常用)
最大内存占用 可使用多少内存
CPU 时间 进程最多用多少 CPU 时间
栈大小 线程/函数调用栈大小
core 文件大小 程序崩溃时是否生成 core dump

二、ulimit 的两种限制

1️⃣ 软限制(soft limit)

  • 当前实际生效的限制
  • 普通用户可以调大但不能超过硬限制

2️⃣ 硬限制(hard limit)

  • 系统管理员设定
  • 普通用户不能提高
  • root 可以修改

三、常用 ulimit 命令

查看当前限制

ulimit -a

示例输出:

core file size          (blocks, -c) 0
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
max user processes              (-u) 31234

修改限制(仅当前 shell 有效)

ulimit -n 65535        # 打开文件数
ulimit -u 4096         # 最大进程数
ulimit -s 8192         # 栈大小

⚠️ 重启或新开 shell 后失效


四、永久修改 ulimit(Ubuntu)

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

sudo vim /etc/security/limits.conf

示例:

* soft nofile 65535
* hard nofile 65535

含义:

  • *:所有用户
  • soft / hard:软/硬限制
  • nofile:打开文件数

✅ 需要 重新登录 才生效


方法 2:systemd 服务(重点)

如果是 服务进程(如 Nginx、MySQL):

sudo systemctl edit nginx
[Service]
LimitNOFILE=65535

然后:

sudo systemctl daemon-reload
sudo systemctl restart nginx

五、常见使用场景

  • ✅ 高并发服务器(调大 nofile)
  • ✅ 防止 fork 炸弹(限制 max user processes)
  • ✅ 调试程序(允许 core dump)
  • ✅ 容器 / 云服务器性能优化

六、一句话总结

ulimit 是 Linux 用来限制“用户或进程能用多少资源”的安全与性能工具

如果你有具体场景(比如 MySQL、Docker、Python、Nginx),我可以给你针对性配置示例。

0 踩