在麒麟os中查看系统资源限制需分五步:一、用ulimit命令查当前会话软硬限制;二、检查/etc/security/limits.conf及limits.d/下配置文件;三、追溯/etc/profile等启动脚本中的ulimit覆盖;四、通过tty重新登录验证pam limits模块是否生效;五、读取/proc/pid/limits获取内核级真实限制。

如果您在麒麟OS中需要确认当前用户或系统对进程资源的约束条件,则可能是由于应用程序运行异常、文件打开失败或进程创建受限。以下是查看系统资源限制的多种方法:
一、使用ulimit命令查看当前会话限制
该方法适用于快速获取当前终端会话中生效的软限制与硬限制,所有值均反映shell及其子进程的实际可用上限。
1、打开终端,执行命令:ulimit -a,显示全部资源限制项,包括文件大小、进程数、文件描述符数量等。
2、若仅需查看文件描述符数量限制,执行:ulimit -n。
3、若需区分软限制与硬限制,分别执行:ulimit -S -a 和 ulimit -H -a。
二、检查系统级持久化配置文件
该方法用于定位由PAM模块加载的全局或用户级默认限制,这些设置在用户登录时被应用,影响所有后续shell会话。
1、查看主限制配置文件:sudo cat /etc/security/limits.conf,其中包含以用户名、组名或通配符开头的软硬限制条目。
2、检查动态加载目录:ls /etc/security/limits.d/,随后逐个查看如 20-nproc.conf 或 90-nofile.conf 等文件内容。
3、确认PAM是否启用limits模块:grep pam_limits.so /etc/pam.d/common-session,应存在 session required pam_limits.so 行。
三、追溯启动脚本中的ulimit覆盖设置
该方法用于发现可能被shell初始化脚本显式重置的ulimit值,此类设置优先级高于limits.conf,但仅作用于当前shell环境。
1、检查系统级初始化脚本:sudo grep -n "ulimit" /etc/profile /etc/bash.bashrc 2>/dev/null。
2、检查当前用户专属配置:grep -n "ulimit" ~/.bashrc ~/.profile 2>/dev/null。
3、若发现匹配行,执行对应脚本后再次运行 ulimit -a 验证是否已被覆盖。
四、验证内核级与PAM联合生效状态
该方法用于确认limits.conf配置是否已通过PAM机制正确注入到登录会话中,避免因配置未加载导致查看结果与预期不符。
1、新建一个非图形界面的TTY终端(Ctrl+Alt+F2),以目标用户身份重新登录。
2、登录后立即执行:ulimit -a,对比此前图形终端中结果是否一致。
3、若不一致,说明图形会话未触发PAM limits模块,可检查桌面环境对应的PAM配置文件,例如:/etc/pam.d/lightdm 或 /etc/pam.d/gdm 中是否存在 session required pam_limits.so。
五、通过系统调用接口直接读取进程限制值
该方法绕过shell封装,直接从内核暴露的接口提取当前进程的rlimit结构体,结果最权威且不受shell环境干扰。
1、安装调试工具包(如未安装):sudo apt install procps(银河麒麟V10SP1适用)。
2、获取当前shell进程PID:echo $$。
3、查看该PID的资源限制:cat /proc/$(echo $$)/limits,输出字段含 Max open files、Max processes 等原始内核值。










