温馨提示×

怎样限制ubuntu进程资源

小樊
40
2026-10-09 18:04:34
栏目: 智能运维

在 Ubuntu 中限制进程资源,常见做法有 cgroups / systemd 限制、ulimit、nice/CPULimit、容器化 等方式。下面按“使用场景”给你一个清晰清单。


一、临时限制(单条命令)

1️⃣ ulimit(用户级限制)

适合限制 当前 shell 及其子进程

ulimit -u 100        # 最大进程数
ulimit -v 500000     # 虚拟内存(KB)
ulimit -t 60         # CPU 时间(秒)
ulimit -f 10000      # 文件大小(KB)

查看当前限制:

ulimit -a

⚠️ 只对当前会话有效,重启失效。


2️⃣ nice / renice(CPU 优先级)

不直接“限资源”,但降低抢占权

nice -n 10 ./app
renice -n 15 -p 1234

3️⃣ cpulimit(限制 CPU 使用率)

适合老程序、无法改配置的情况

sudo apt install cpulimit
cpulimit -p 1234 --limit 30   # 限制到 30%

二、长期 / 稳定限制(推荐)

4️⃣ systemd 服务限制(最推荐 ✅)

适合 服务、后台程序

编辑 service:

[Service]
ExecStart=/opt/app/run.sh

CPUQuota=50%
MemoryMax=512M
TasksMax=100

应用:

sudo systemctl daemon-reload
sudo systemctl restart yourapp

常用参数:

参数 说明
CPUQuota CPU 百分比
MemoryMax 最大内存
TasksMax 最大线程/进程数
IOWeight 磁盘 IO 权重

✅ 重启依然生效,稳定可靠。


5️⃣ cgroups v2(精细控制)

Ubuntu 20.04+ 默认 cgroups v2

创建限制组:

sudo mkdir /sys/fs/cgroup/mygroup
echo 50 > /sys/fs/cgroup/mygroup/cpu.max
echo 536870912 > /sys/fs/cgroup/mygroup/memory.max
echo 1234 > /sys/fs/cgroup/mygroup/cgroup.procs

适合:

  • 多进程
  • 容器底层
  • 高级运维

三、容器方式(隔离最彻底)

6️⃣ Docker

docker run \
  --cpus=1 \
  --memory=512m \
  --pids-limit=100 \
  myimage

✅ 资源、文件、网络全部隔离。


四、快速选择建议

场景 推荐方式
临时测试 ulimit / cpulimit
后台服务 systemd
多进程统一限制 cgroups
完全隔离 Docker

如果你能告诉我:

  • 是 哪个程序
  • 想限制 CPU / 内存 / 进程数
  • 是否 开机自启

我可以直接帮你写一份可用配置。

0 踩