+
33
-

回答

在 Linux 中,主要通过 cgroups(控制组) 限制进程的 CPU、内存和网络资源。现代系统用 cgroups v2(推荐),旧系统用 v1。

方法(以 cgroups v2 为例):

创建控制组

sudo mkdir /sys/fs/cgroup/mylimit

限制 CPU(例如最多用 1 个核心的 50%)

echo "50000 100000" | sudo tee /sys/fs/cgroup/mylimit/cpu.max
# 格式:quota period(单位微秒),50000/100000 = 0.5 核

限制内存(例如最多 512MB)

echo "536870912" | sudo tee /sys/fs/cgroup/mylimit/memory.max
# 单位字节,512MB = 512 * 1024²

限制网络(间接)cgroups 不能直接限速网络,但可通过 tc(流量控制)+ cgroup classid 实现。更简单方式:用 systemd 或容器工具。

把进程加入控制组

echo $PID | sudo tee /sys/fs/cgroup/mylimit/cgroup.procs

更简单的方式:

用 systemd(自动管理 cgroups):

systemd-run --scope -p CPUQuota=50% -p MemoryMax=512M your-command

用容器(如 Podman/Docker):

podman run -m 512m --cpus=0.5 your-image

普通用户可通过 systemd-run 限制自己的进程,无需 root(部分限制需权限)。

网友回复

我知道答案,我要回答