温馨提示×

debian ulimit能限制什么

小樊
51
2026-09-09 23:12:12
栏目: 智能运维

在 Debian(以及其他 Linux 发行版)里,ulimit 是用来限制单个进程(或 shell 启动的进程)可使用的系统资源的命令,通常针对当前 shell 会话及其子进程生效。

下面按常见类别说明 ulimit 能限制什么。


一、ulimit 能限制的资源类型

可通过 ulimit -a 查看当前限制。

1. 进程 / 线程相关

  • 最大进程数(用户)
    ulimit -u
    
    限制同一用户能创建的进程/线程总数。

2. 内存相关

  • 最大虚拟内存
    ulimit -v
    
    限制进程可用虚拟地址空间(KB)
  • 核心转储文件大小
    ulimit -c
    
    程序崩溃时 core dump 文件大小(0 表示不生成)
  • 常驻内存(RSS)
    ulimit -m
    
    很多系统已忽略此限制

3. 文件相关

  • 最大打开文件数
    ulimit -n
    
    限制进程能打开的 file descriptor 数量(非常常用)
  • 单个文件最大大小
    ulimit -f
    
    限制进程能创建的文件大小(blocks)

4. CPU 相关

  • CPU 时间
    ulimit -t
    
    进程最多使用的 CPU 秒数,超时会被杀掉

5. 信号 / 调试

  • 最大挂起信号数
    ulimit -i
    
  • Core dump 控制
    ulimit -c
    

6. 其他

  • 最大栈大小
    ulimit -s
    
  • 最大锁定内存
    ulimit -l
    
  • POSIX 消息队列
    ulimit -q
    

二、ulimit 的两种限制模式

1. 软限制(soft limit)

  • 进程可以自己调高到硬限制
  • 超出会报警或失败

2. 硬限制(hard limit)

  • 只有 root 能提高
  • 普通用户不能突破

示例:

ulimit -Sn 1024   # 软限制
ulimit -Hn 2048   # 硬限制

三、ulimit 不能限制什么(重要)

不能限制

  • 整个系统的总资源
  • 其他用户的资源
  • 已经运行的进程(对新进程生效)
  • 容器内的真正 cgroup 限制(需用 systemd / cgroup)

四、Debian 下 ulimit 的常见使用场景

1. 临时限制(当前 shell)

ulimit -n 65535
./my_server

2. 永久配置(Debian)

  • /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
  • 需要 pam_limits.so 支持(登录 shell 生效)

3. systemd 服务

ulimit 对 systemd 服务不生效,要用:

[Service]
LimitNOFILE=65535

五、一句话总结

Debian 的 ulimit 用来限制“单个用户或进程”在 shell 环境下能使用的系统资源,比如文件数、内存、CPU、进程数,但不是系统级资源控制器。

如果你有具体场景(比如 Web 服务、数据库、Docker),我可以给你更精确的 ulimit 配置建议。

0