我想限制每个用户的 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