大家好!在运营Linux服务器时,有时会遇到令人心惊胆战的时刻。比如,一个用户执行的一个错误脚本,就可能占用服务器的所有CPU或内存,导致整个系统停滞。😱 尤其是无限自我复制的“fork bomb”攻击,光是想象就令人毛骨悚然。
为了防止这种灾难,用户资源限制(User Resource Limits)是必不可少的。它就像一道无形的防火墙,主动阻止特定用户或组过度使用系统资源。今天,我们将深入探讨这项强大功能的方方面面!

1. 限制的两面:软限制 vs 硬限制 🚦
Linux资源限制有两种类型。理解它们之间的区别至关重要。
软限制 (Soft Limit)
顾名思义,它是一种柔性的“警戒线”或“建议限度”。用户达到此限制时会收到警告,但可以在硬限制范围内暂时自行提高限度。
硬限制 (Hard Limit)
这是一个绝对不可逾越的“物理屏障”或“最大限度”。一旦设置,只有管理员(root)才能提高此限度,普通用户绝不能超过此值。
💳 信用卡比喻: 软限制就像你自己设定的预算目标,“这个月我只花100万韩元”。而硬限制则像信用卡公司设定的“总信用额度500万韩元”,即使你想刷更多也刷不了。
2. 何处以及如何?深入解析资源限制配置文件 🛠️
这些限制可以在 /etc/security/limits.conf 文件中配置,或者更推荐的方式是,在 /etc/security/limits.d/ 目录下创建一个新的 .conf 文件进行设置(例如:99-custom.conf)。
配置文件的语法非常简单,每行定义一个规则。
# <domain> <type> <item> <value>
: 规则适用的对象。 - username: 特定用户名(例如:john)
- @groupname: 特定组(例如:@developers)
- *: 所有用户
: 限制的类型。 - soft: 软限制
- hard: 硬限制
- : 要限制的资源类型。
- nproc: 最大进程数(Number of Processes) – 防止“fork bomb”的必备!
- fsize: 可创建文件的最大大小(单位:KB)。防止日志文件无限增长。
- nofile: 可打开文件的最大数量(Number of Open Files) – 对Web服务器或DB服务器非常重要。
- cpu: 最大CPU使用时间(单位:分钟)
- memlock: 可锁定到内存的最大空间(单位:KB)
: 限制的值。
3. 实战示例:这样使用吧 📋
以下是实际使用示例。您可以将此内容保存到 /etc/security/limits.d/99-my-limits.conf 这样的文件中。
# 'developers'组中的所有用户最多可以拥有100个进程(软/硬限制相同)
@developers - nproc 100
# 用户'jane'只能创建最大5GB大小的文件(硬限制)
jane hard fsize 5242880 # 5 * 1024 * 1024 KB
# 将用户'john'的打开文件数限制为软限制50000,硬限制60000
john soft nofile 50000
john hard nofile 60000
# 所有用户不能使用CPU超过1000分钟
* hard cpu 1000
4. 设置完成!现在是验证时间 ✅
完成设置后,还剩下两个重要步骤。
1. 必须重新登录!
limits.conf 设置在用户新登录时通过 pam_limits.so 模块应用。因此,如果更改了设置,相关用户必须先注销再重新登录。
2. 使用 ulimit 命令验证
已登录用户可以使用 ulimit 命令查看适用于自己的限制。
- 查看所有限制:
`
ulimit -a
`
- 查看最大进程数(软/硬):
`
查看软限制 (-Su)
ulimit -Su
查看硬限制 (-Hu)
ulimit -Hu
`
- 查看最大文件大小(软):
`
查看软限制 (-Sf)
ulimit -Sf
`
结论:稳定服务器的必备习惯
用户资源限制不仅仅是“控制”用户的功能。它是一种专业的系统管理技术,可以保护整个系统免受意外错误或攻击,为所有用户公平分配资源,从而提高服务器的稳定性和可靠性。
现在就为您的服务器设置适当的资源限制,摆脱因故障而彻夜难眠的困扰吧!🚀
标签:
Linux, ulimit, limits.conf, 资源管理, 系统管理, 安全, nproc, fsize, DevOps, 服务器稳定性
发表回复