在 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(部分限制需权限)。
网友回复


