当前位置:首页 > 技术 > 正文内容

CentOS 6 系统资源配额管理配置

访客 技术 2026年7月19日 1

1. 限制用户 CPU 使用时间

在 CentOS 6 系统中,可通过 PAM 模块控制用户的资源使用量。核心配置文件位于:

  • /etc/security/limits.conf —— 主配置文件
  • /etc/security/limits.d/ —— 子模块配置目录

创建新用户并检查默认资源限制:

[root@reddhat6_155_201 ~]# useradd admin
[root@reddhat6_155_201 ~]# su - admin -c 'ulimit -a'
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 30471
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 65535
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 30471
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

编辑 /etc/security/limits.confadmin 用户设置 CPU 时间上限:

admin    soft    cpu    60
admin    hard    cpu    120

说明:软限制(soft)触发警告,硬限制(hard)直接终止进程,且重启后计时重置。

切换至该用户查看更新后的限制:

[root@reddhat6_155_200 ~]# su - admin
[admin@reddhat6_155_200 ~]$ ulimit -a | grep "cpu time"
cpu time               (seconds, -t) 60

使用 dd 命令测试超时行为(超过 60 秒将被强制终止):

[admin@reddhat6_155_200 ~]$ dd if=/dev/zero of=/dev/null &

观察 top 命令中进程的 TIME 列变化,确认运行时间达到 60 秒后被中断。

尝试手动调整 ulimit 超过软限制会失败,但可临时提升至硬限制上限(即 120 秒),超出则立即终止。

支持的格式示例:

username   soft   cpu   1      # 用户最多运行 1 分钟
username   hard   cpu   2      # 超过 2 分钟强制终止
UID        soft   cpu   5      # UID 为 5 的用户限制
500:       hard   cpu   10     # UID ≥ 500 的用户上限
@groupname hard   cpu   20     # 属于指定组的用户统一限制

2. 控制用户内存占用

内存相关限制包括两个参数:

  • rss:驻留集大小(实际物理内存使用量,对应 top 中的 RES 列)
  • as:地址空间上限(虚拟内存大小,对应 top 中的 VIRT 列)

注意:当前 CentOS 6 的 pam_limits 模块不支持 rss 限制,仅可通过 as 实现控制。

admin 用户设置最大虚拟内存为 256MB(262144 KB):

[root@reddhat6_155_200 ~]# echo 'admin    hard    as    262144' >> /etc/security/limits.conf

切换用户验证设置是否生效:

[admin@reddhat6_155_200 ~]$ ulimit -v
262144

3. 限制用户可启动进程数量

系统默认通过 /etc/security/limits.d/90-nproc.conf 限制普通用户最大进程数:

*          soft    nproc     1024
root       soft    nproc     unlimited

切换到 admin 用户验证限制:

[root@reddhat6_155_200 ~]# su - admin
[admin@reddhat6_155_200 ~]$ ulimit -u
1024

使用 shell fork bomb 测试限制效果:

[admin@reddhat6_155_200 ~]$ :(){ :|:& };:
[1] 749
-bash: fork: retry: 资源暂时不可用

当进程数达到 1024 后,系统无法再创建新进程,阻止了资源耗尽攻击。

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。