温馨提示×

ubuntu怎么限制进程资源

小樊
41
2026-10-18 12:27:11
栏目: 智能运维

在 Ubuntu(Linux)里限制进程资源,常见做法有 cgroup / systemd 资源控制、ulimit、nice/CPUsets、以及容器方式。下面按“最常用 → 最专业”介绍。


一、临时限制(当前 shell / 进程)

1️⃣ ulimit(用户级资源限制)

限制当前 shell 及其子进程的资源:

ulimit -u 500        # 最多 500 个进程
ulimit -v 1048576   # 虚拟内存 1GB (KB)
ulimit -t 60        # CPU 时间 60 秒
ulimit -f 100000    # 文件大小 100MB

查看所有限制:

ulimit -a

✅ 适合:防止程序失控
❌ 不适合:精确控制 CPU / IO


二、运行单个程序时限制(推荐)

2️⃣ systemd-run(最简单、现代)

Ubuntu 默认使用 systemd:

systemd-run \
  --scope \
  -p MemoryMax=500M \
  -p CPUQuota=50% \
  ./my_program

常用参数:

  • MemoryMax=500M
  • CPUQuota=50%
  • TasksMax=100

✅ 不需要写服务文件
✅ 立刻生效


三、长期限制(服务 / 守护进程)

3️⃣ systemd service 文件

适合长期运行程序:

[Service]
ExecStart=/opt/app/run.sh
MemoryMax=1G
CPUQuota=80%
TasksMax=200
sudo systemctl daemon-reload
sudo systemctl restart myapp

✅ 最稳定方案
✅ 服务器首选


四、精确控制 CPU / 内存 / IO(cgroup)

4️⃣ cgroup v2(Ubuntu 22.04+)

sudo mkdir /sys/fs/cgroup/mygroup
echo 500M | sudo tee /sys/fs/cgroup/mygroup/memory.max
echo 100000 > /sys/fs/cgroup/mygroup/cpu.max
echo $PID | sudo tee /sys/fs/cgroup/mygroup/cgroup.procs

适合:

  • 多进程
  • 容器底层
  • 高级调度

五、CPU 优先级 & 核心绑定

5️⃣ nice / cpulimit

nice -n 10 ./app
cpulimit -p PID --limit=30

6️⃣ 绑定 CPU 核心

taskset -c 0,1 ./app

六、容器方式(最隔离)

docker run -it --memory=500m --cpus=1 ubuntu

✅ 完全隔离
✅ 生产推荐


推荐总结

场景 推荐方式
临时跑程序 systemd-run
服务长期运行 systemd service
多进程精确控制 cgroup
简单防失控 ulimit
完全隔离 Docker

如果你能说明 具体限制什么(CPU / 内存 / 进程数)和使用场景(桌面 / 服务器),我可以给你更精准的命令。

0 踩