ulimit是shell内置命令,用于临时限制当前会话资源;默认操作软限制,-h/-s分别指定硬/软限制,设置后立即生效但仅限当前终端会话。

直接在终端里运行 ulimit 命令就能限制当前 Shell 及其所有子进程的资源使用。它不依赖外部程序,是 shell 自带的功能,设置后立即生效,但仅对当前会话有效。
查看当前所有限制
执行以下命令可列出全部资源上限:
ulimit -a
输出中每行对应一项限制,例如 open files 对应 -n,max user processes 对应 -u。注意默认显示的是软限制(soft limit),即实际起作用的值。
常用资源的临时设置方法
只需加选项和数值即可修改。常见操作包括:
-
ulimit -n 4096:将可打开文件数设为 4096(影响 Web 服务、数据库连接等) -
ulimit -u 2048:限制用户最多启动 2048 个进程(防 fork 爆炸) -
ulimit -s 8192:把栈大小设为 8192 KB(避免深度递归崩溃) -
ulimit -c 0:禁止生成 core dump 文件(节省磁盘,提升安全性) -
ulimit -f 1048576:限制单个文件最大为 1048576 × 512 字节 ≈ 512 MB
软限制与硬限制的区别
普通用户只能调低硬限制,不能提高;软限制可在硬限制范围内自由调整:
-
ulimit -Hn 8192:把文件描述符硬限制设为 8192(需 root 权限) -
ulimit -Sn 4096:把软限制设为 4096(普通用户可执行) -
ulimit -n:不带数值时,只显示当前软限制(等价于ulimit -Sn)
若未指定 -H 或 -S,默认操作软限制;若未指定任何选项,默认操作 -f(文件大小)。
验证是否生效
设置后建议立刻验证,尤其是关键项:
- 查文件描述符:
ulimit -n - 查最大进程数:
ulimit -u - 启动一个子进程(如
bash),再在其中运行ulimit -n,确认继承成功
退出当前终端后,所有 ulimit 设置自动失效。如需长期生效,请配置 /etc/security/limits.conf 或 systemd 用户服务单元。











