在 CentOS 7.9 中,限制单个用户的进程数可以通过以下方法实现:
1. 修改 /etc/security/limits.conf 文件
这是最常用的方法,通过设置 nproc 参数来限制用户的进程数。
- 使用 root 用户编辑
/etc/security/limits.conf文件:
vi /etc/security/limits.conf- 在文件末尾添加以下内容:
username soft nproc 100 # 设置软限制为100个进程
username hard nproc 150 # 设置硬限制为150个进程其中,username 是要限制的用户名,soft 是软限制(警告值),hard 是硬限制(最大值)。
- 保存并退出文件。
- 确保
/etc/pam.d/login文件中包含以下行(通常默认已存在):
session required /lib/security/pam_limits.so- 重新登录用户,使配置生效
2. 修改 /etc/security/limits.d/20-nproc.conf 文件
在 CentOS 7 中,nproc 的限制可能会被 /etc/security/limits.d/20-nproc.conf 文件覆盖,因此需要同时修改该文件。
- 编辑
/etc/security/limits.d/20-nproc.conf文件:
vi /etc/security/limits.d/20-nproc.conf- 修改或添加以下内容:
username soft nproc 100 # 设置软限制为100个进程
username hard nproc 150 # 设置硬限制为150个进程- 保存并退出文件。
- 重新登录用户,使配置生效689。
3. 使用 systemd 的 UserTasksMax 参数
如果系统使用 systemd,可以通过修改 UserTasksMax 参数来限制用户的进程数。
- 编辑
/etc/systemd/logind.conf文件:
vi /etc/systemd/logind.conf- 添加或修改以下行:
UserTasksMax=100 # 限制每个用户的最大任务数为100- 保存并退出文件。
- 重启
systemd-logind服务:
systemctl restart systemd-logind- 重新登录用户,使配置生效
4. 使用 cgroups 限制用户资源
cgroups 是 Linux 内核功能,可以对用户或进程组的资源使用进行更精细的控制。
- 安装
libcgroup-tools:
yum install libcgroup-tools2.编辑 /etc/cgconfig.conf 文件,添加以下内容:
group user_limit {
cpu {
cpu.shares = 512;
}
memory {
memory.limit_in_bytes = 500M;
}
pids {
pids.max = 100; # 限制最大进程数为100
}
}3.编辑 /etc/cgrules.conf 文件,添加以下内容:
username cpu,memory,pids user_limit4.启动 cgconfig 和 cgred 服务:
systemctl start cgconfig
systemctl start cgred- 重新登录用户,使配置生效
5. 临时修改(会话有效)
如果需要临时限制用户的进程数,可以使用 ulimit 命令:
ulimit -u 100 # 限制当前会话的进程数为100此方法仅对当前会话有效,退出后失效89。
总结
- 永久限制:推荐使用
/etc/security/limits.conf和/etc/security/limits.d/20-nproc.conf文件。 - 系统级限制:可以使用
systemd的UserTasksMax参数。 - 高级控制:使用
cgroups实现更精细的资源管理。 - 临时限制:使用
ulimit命令。
















