发布于2026-08-22 阅读(0)
扫一扫,手机访问
在CentOS 7系统里,若想为单个用户设定CPU和内存的限制,可通过编辑/etc/security/limits.conf文件来实现。具体操作如下:在文件中添加“username soft cpu 300、hard cpu 600(单位为秒/分钟)”,这是对CPU的限制设定;再添加“soft memlock 512000、hard memlock 1024000(单位为KB)”以及“soft as 1048576、hard as 2097152(单位为字节)”,这是对内存的限制设定。需要注意的是,要确保PAM启用了pam_limits.so模块,并且用户需重新登录才能使这些设置生效。

ulimit 限制单个用户的 CPU 和内存资源CentOS 7 默认不限制用户进程的资源用量,老旧机器或多人共用环境里,一个 runaway 进程就可能吃光内存、拖垮系统。直接改 /etc/security/limits.conf 是最常用也最有效的入口。
常见错误是只写用户名,却没配生效范围(比如漏掉 - soft nproc 1024 导致 fork 失败但无提示),或改完没重启登录会话。
/etc/security/limits.conf,追加(不是覆盖):username soft cpu 300 username hard cpu 600 username soft memlock 512000 username hard memlock 1024000 username soft as 1048576 username hard as 2097152
cpu 单位是秒/分钟,memlock 是 KB,as 是虚拟内存字节数(即 RLIMIT_AS)。注意:soft 可被用户临时提升(不超过 hard),hard 只能 root 修改。
/etc/pam.d/login 或 /etc/pam.d/sshd 是否含 session required pam_limits.so;若缺失,手动添加一行su - username 不触发 limits,必须完整会话)quota)配额不是“给目录赋权”,而是对挂载点上所有属于该用户的文件块和 inode 总量设上限。它依赖 ext4 文件系统支持,且必须在挂载时启用 usrquota。
典型翻车点:改了 /etc/fstab 但忘记 mount -o remount /,或运行 quotacheck 前没先关掉所有该挂载点上的写入进程(否则生成的 aquota.user 会不准确)。
tune2fs -l /dev/sda1 | grep "Filesystem features",输出含 has_journal 即可/etc/fstab 对应行,末尾加 ,usrquota,grpquota(注意逗号不空格)mount -o remount /,再运行 quotacheck -cum /(-c 初始化,-u 用户,-m 不校验已挂载状态)quotaon /;查看:quota -u username配额生效后,用户 dd if=/dev/zero of=test.img bs=1M count=2000 超过硬限制会报 Disk quota exceeded,而非 No space left on device —— 这是验证是否真正起效的关键信号。
systemd 的 ResourceLimit 在 CentOS 7 上基本不可用CentOS 7 自带的 systemd 版本是 219,而 MemoryLimit、CPUQuota 等资源控制项在 systemd 229+ 才稳定支持 cgroup v2,且默认仍用 cgroup v1。强行在 .service 文件里写 MemoryLimit=512M 会被忽略,日志里也不会报错,只默默失效。
这不是配置问题,是版本硬伤。想用 systemd 做细粒度资源隔离,必须升级 systemd(不推荐)或换发行版(如 CentOS 8 Stream 或 Rocky 8+)。
systemctl show --property=CPUQuota some.service 返回 CPUQuota=(空值)即未识别cgrulesengd + cgconfig 配置 cgroup v1 规则(需装 libcgroup-tools),但维护成本高,仅建议对关键服务(如数据库)做单点控制给用户加权限最容易踩的坑,不是“不够用”,而是“太宽泛”。比如 chmod -R 777 /home/xxx 看似方便,但若该目录下有 .ssh 或 .bashrc,SSH 会拒绝登录(私钥权限太宽松),shell 启动也可能失败。
还有一种更隐蔽的情况,那就是SELinux上下文错乱。比如说,当你使用 chown -R 或者 cp -r 命令来移动文件时,SELinux标签并不会自动更新。这就会导致像httpd、vsftpd这类服务,虽然本应该有权限读取这些文件,但实际上却无法读取。而且,这时报错信息显示的是 Permission denied ,而不是与SELinux相关的字样,这就很容易让人产生误解。
777,对 web 目录用 755/644,上传目录用 755 + setgid 保证组继承restorecon -Rv /path/to/dir(比 chcon 更可靠)/etc、/var/log、/boot 等系统路径做递归权限变更资源分配的本质不是开放,而是划定边界。越老的硬件、越简陋的部署环境,越要靠精确的限制来换取整体稳定 —— 宽松从来不是兼容性的解药,只是延迟崩溃的麻醉剂。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
4
5
6
7
8
9