如何限制每个用户的 Linux CPU 和 RAM 使用量

如何限制每个用户的 Linux CPU 和 RAM 使用量

我想限制每个用户的 CPU 和 RAM 使用情况。

假设有用户约翰。他可以运行任意数量的进程,但他还需要有 2048 兆字节的 RAM 和 2 个 CPU 核心。

我知道有“ulimit”和“nice”这样的方法,但我只能使用一个命令,所以我需要这样的东西:

limiter_cmd -ram 2048 -cpu 2 screen -s 1 ./script

另外,我正在使用“屏幕”命令来保存会话。

答案1

cgroups。在systemd 系统,这意味着改变用户切片的资源控制。

对于 systemd v239 及更高版本,可以通过以下方式将其设置为默认限制:删除搜索截断功能

# mkdir -p /etc/systemd/system/user-.slice.d
# cat > /etc/systemd/system/user-.slice.d/50-memory.conf << EOF
[Slice]
MemoryMax=2G
CPUQuota=200%
EOF
# systemctl daemon-reload

您可能需要启用 CPU 和内存统计(如果尚未启用),请参阅man systemd.resource-control

相关内容