温馨提示×

如何限制ubuntu进程资源

小樊
37
2026-10-24 09:52:48
栏目: 智能运维

在 Ubuntu(Linux)中限制进程资源,常用的方法有以下几种,按使用场景从简单到专业排列:


一、使用 ulimit(临时、针对 shell 及子进程)

适合:当前终端会话、测试用

# 查看当前限制
ulimit -a

# 限制最大内存(示例:500MB)
ulimit -v 512000

# 限制最大 CPU 时间(秒)
ulimit -t 60

# 限制最大打开文件数
ulimit -n 1024

⚠️ 只对当前 shell 及其子进程有效,重启失效。


二、使用 systemd 限制服务资源(推荐、生产环境)

适合:后台服务 / 守护进程

编辑 service 文件:

sudo systemctl edit nginx

添加:

[Service]
MemoryMax=512M
CPUQuota=50%
TasksMax=100

应用:

sudo systemctl daemon-reload
sudo systemctl restart nginx

常用参数:

  • MemoryMax:最大内存
  • CPUQuota:CPU 使用上限(如 50% = 半个核)
  • IOWeight:磁盘 IO 权重

三、使用 cgroups(精细控制)

适合:多进程、容器级隔离

cgroup v2 示例(Ubuntu 20.04+)

sudo mkdir /sys/fs/cgroup/mygroup
echo 512M | sudo tee /sys/fs/cgroup/mygroup/memory.max
echo $PID | sudo tee /sys/fs/cgroup/mygroup/cgroup.procs

四、使用 cpulimit(限制已运行进程 CPU)

适合:临时限制某个 PID

sudo apt install cpulimit
sudo cpulimit -p 1234 -l 30

限制 PID 1234 最多用 30% CPU


五、使用 nice / renice(调整优先级)

适合:不是硬限制,而是优先级

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

数值越大,优先级越低


六、使用 docker(进程级资源隔离)

docker run -m 512m --cpus=1.5 myimage

选择建议

场景 推荐方式
临时测试 ulimit / cpulimit
系统服务 systemd
多进程隔离 cgroups
容器 Docker

如果你能说明:

  • 是命令行程序还是服务
  • 想限制 CPU / 内存 / IO
  • 是否长期生效

我可以给你更精确的命令。

0 踩