- ulimit是linux中用于控制用户或进程资源使用的机制,分为软限制(实际生效)和硬限制(软限制上限,仅root可提升);2. 临时设置通过ulimit命令实现,如ulimit -n 1024设置最大打开文件数,仅当前会话有效;3. 永久配置需修改/etc/security/limits.conf或/etc/security/limits.d/*.conf,格式为 ,支持用户、组、通配符配置;4. 配置生效需系统启用pam_limits.so模块,且通过支持的登录方式(如ssh、本地终端)重新登录;5. systemd服务不读取limits.conf,需在服务单元文件中使用limitnofile等参数或修改systemd.conf全局设置;6. 验证可通过ulimit -a查看用户限制,或cat /proc//limits查看具体进程;7. 注意su需使用su – username以触发pam加载,图形界面和容器环境可能不适用limits.conf,应避免盲目设置unlimited以防资源耗尽。合理配置需结合pam、systemd及实际场景,确保系统稳定性与安全性。

在 Linux 系统中,
ulimit
是一个用于控制用户或进程资源使用上限的机制。通过合理配置
ulimit
,可以防止某个用户或进程占用过多系统资源(如内存、文件数、CPU 时间等),从而保障系统稳定性和安全性。以下是关于如何配置和限制用户资源的详细说明。
一、ulimit 是什么?软限制与硬限制
ulimit
是 shell 内置命令,用于查看或设置当前 shell 及其派生进程的资源限制。它支持多种资源类型,比如:
打开文件数(
-n
)进程数(
-u
)虚拟内存大小(
-v
)栈大小(
-s
)CPU 时间(
-t
)文件大小(
-f
)
每个资源有 软限制(soft limit) 和 硬限制(hard limit):
软限制:实际生效的限制,进程不能超过此值。硬限制:软限制的上限,只有 root 用户可以提升。
普通用户只能降低或在硬限制范围内调整软限制,root 用户可以修改两者。
二、临时设置 ulimit(当前会话有效)
在终端中使用
ulimit
命令可临时修改限制:
# 查看所有限制ulimit -a# 设置最大打开文件数为 1024(软限制)ulimit -n 1024# 设置硬限制(需 root)ulimit -Hn 2048# 设置软限制ulimit -Sn 1024
⚠️ 注意:这种方式只对当前 shell 及其子进程有效,重启后失效。
三、永久配置 ulimit:使用 /etc/security/limits.conf
要实现永久生效,需修改
/etc/security/limits.conf
文件或
/etc/security/limits.d/*.conf
中的配置文件。
配置格式:
domain:用户、组(以 @ 开头)、或通配符(*、%)type:
soft
:软限制
hard
:硬限制
both
或
-
:同时设置软硬限制item:资源类型,如
nofile
、
nproc
等value:数值或
unlimited
常见配置示例:
# 用户 alice 最多打开 4096 个文件alice soft nofile 4096alice hard nofile 8192# 所有用户最大进程数限制* soft nproc 1024* hard nproc 2048# 组 users 限制内存使用@users hard as 1048576 # 1GB (单位 KB)# root 用户特殊权限root soft nofile 65536root hard nofile 65536# 同时设置软硬限制* - memlock unlimited
支持的 item 类型(常用):
@@######@@打开文件描述符数个@@######@@用户可创建的最大进程数个@@######@@地址空间(虚拟内存)KB@@######@@单个文件最大大小KB@@######@@锁定内存大小KB@@######@@CPU 时间(分钟)分钟@@######@@栈大小KB
四、使 limits 配置生效的关键条件
并非所有登录方式都会自动加载
nofile
,需确保以下条件:
PAM 模块启用
系统必须启用
nproc
模块。检查以下文件是否包含:
as
应包含一行:
fsize
登录方式支持
卡拉OK视频制作
卡拉OK视频制作,在几分钟内制作出你的卡拉OK视频
178 查看详情
通过 SSH、本地终端登录通常支持。systemd 服务、docker 容器、su 切换用户等可能不自动加载,需特别配置。
重启或重新登录生效
修改后需重新登录用户才能生效(不能仅 source 或新开子 shell)。
五、systemd 服务中的 ulimit 限制
现代系统使用 systemd 时,服务的资源限制由 systemd 控制,不读取
memlock
。
需在服务单元文件中设置,例如:
cpu
或全局设置
stack
:
limits.conf
修改后运行:
pam_limits.so
六、验证配置是否生效
切换到目标用户:
/etc/pam.d/common-session/etc/pam.d/sshd/etc/pam.d/login
查看限制:
session required pam_limits.so
或查看进程限制(需知道 PID):
limits.conf
七、常见问题与注意事项
su 切换用户可能不生效:建议使用
[Service]LimitNOFILE=8192LimitNPROC=4096LimitAS=infinityLimitSTACK=8192
(模拟登录 shell)。图形界面登录可能忽略 limits:取决于显示管理器配置。容器环境独立限制:Docker/K8s 使用自己的资源控制(如 cgroups),需单独配置。不要盲目设 unlimited:可能导致资源耗尽,影响系统稳定性。
基本上就这些。合理配置
/etc/systemd/system.conf
能有效防止资源滥用,但需结合 PAM、systemd 和实际使用场景综合设置。关键是理解软/硬限制、配置文件位置和加载机制。
DefaultLimitNOFILE=65536DefaultLimitNPROC=32768
systemctl daemon-reexecsystemctl daemon-reload
su - username
ulimit -a
cat /proc//limits
su - username
ulimit
以上就是如何限制用户资源 ulimit系统限制配置的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/442812.html
微信扫一扫
支付宝扫一扫