Linux怎么查看系统的软限制与硬限制 Linux下ulimit参数全集详解

小萱小哥_9930

小萱小哥_9930

2026-05-07

732人浏览

原创

直接运行 ulimit -a 可查看当前 shell 所有资源的软限制值;要分别查看某项的软/硬限制,需用 ulimit -sn / ulimit -hn 等带 -s 或 -h 标志的命令。

linux怎么查看系统的软限制与硬限制 linux下ulimit参数全集详解

怎么用 ulimit 查看当前 shell 的软硬限制

直接运行 ulimit -a 就能看到所有资源的软限制值(即当前生效值)。它不区分软硬,只显示你此刻能用的上限——这个值就是软限制。

要单独看某项的软/硬限制,必须加 -S 或 -H 标志:

  • ulimit -Sn 显示当前 shell 的“打开文件数”软限制(比如 1024)
  • ulimit -Hn 显示对应硬限制(比如 65536)
  • ulimit -Su 和 ulimit -Hu 分别查进程数限制

注意:ulimit 查的是**当前 shell 环境**的限制,不是系统全局值,也不是某个后台服务的实际限制。如果你在 systemd 启动的 nginx 里看到 “Too many open files”,ulimit -n 的结果很可能和 nginx 进程无关。

/proc/self/limits 能看到更真实的进程级限制

每个进程在启动时继承其父进程(通常是 shell)的 ulimit 设置,但一旦启动完成,它的限制就固化在 /proc/[pid]/limits 里了。运行 cat /proc/self/limits 可以看到当前 shell 进程的完整软硬限制表,字段清晰:Limit、Soft Limit、Hard Limit、Units。

这对排查问题特别有用:

Obsidian (Linux)
Obsidian (Linux)

操作 Obsidian 库(纯 Markdown 笔记),并通过 notesmd-cli 实现自动化。

下载
  • 如果 ulimit -n 显示 65536,但 cat /proc/self/limits | grep "Max open files" 显示 Soft Limit 是 1024,说明你当前 shell 并没真正应用新限制(可能改了配置但没重登录)
  • 对某个 Java 进程,用 cat /proc/$(pgrep -f 'java.*app')/limits | grep files 能确认它到底被卡在哪个值上
  • 输出里的 Max processes 对应 -u,Max file size 对应 -f,命名和 ulimit 参数不完全一致,别按字面硬套

ulimit 常用参数和单位陷阱

ulimit 多数参数的单位不是字节或个数,而是抽象块或 KB,容易误判:

  • -c(core file size):单位是 512 字节块。设 ulimit -c 0 是禁 core,ulimit -c 100 表示最多 51200 字节
  • -d(data seg size)、-s(stack size):单位是 KB
  • -f(file size):默认单位也是 512 字节块;ulimit -f 1024 = 最大 512KB 文件
  • -n(open files)、-u(processes):单位是**个数**,这是少数直观的参数

执行 ulimit -a 时,右边的单位会一并列出(如 “open files (-n) 1024”),但很多人扫一眼就跳过。临时调高文件数时,写 ulimit -n 65536 没问题;但调堆栈大小,ulimit -s 8192 是 8MB,不是 8KB。

为什么改了 limits.conf 还不生效

最常踩的坑是以为编辑完 /etc/security/limits.conf 就立刻全局生效。实际上它只在用户**新登录会话**中加载,且依赖 PAM 正确调用:

  • SSH 登录、图形界面登录、su - username 都算“新会话”;但 su username(不带 -)不会重载 limits
  • 检查 /etc/pam.d/sshd 或 /etc/pam.d/common-session 是否有 session required pam_limits.so;缺这行,limits.conf 形同虚设
  • systemd 服务(如 nginx.service)默认不读 limits.conf,必须在 service 文件里显式写 LimitNOFILE=65536,再 systemctl daemon-reload && systemctl restart xxx
  • 容器内进程(如 docker run)通常继承宿主 init 进程的限制,而非容器用户的 limits.conf

真正生效的路径是:limits.conf → PAM session → login shell → 子进程。中间任一环断开,ulimit 看到的就还是旧值。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

4090

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3473

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2693

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

6530

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

6182

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3593

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

3085

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

3319

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

297

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习