温馨提示×

怎么限制linux进程资源

小樊
40
2026-10-18 06:03:13
栏目: 智能运维

在 Linux 下限制进程资源,常见做法有以下几种,按使用场景从简单到专业说明:


一、命令行临时限制(最常用)

1. ulimit(限制当前 shell 及子进程)

ulimit -u 100        # 最多 100 个进程
ulimit -v 524288     # 虚拟内存 512MB(单位 KB)
ulimit -f 10240      # 文件最大 10MB
ulimit -n 1024       # 最多打开 1024 个文件

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


2. nice / renice(限制 CPU 优先级)

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

只影响调度优先级,不是硬限制。


3. timeout(限制运行时间)

timeout 60 ./app

超过 60 秒自动杀死进程。


4. cpulimit(限制 CPU 使用率)

cpulimit -p 1234 --limit 30

限制进程最多用 30% CPU。


二、systemd 服务限制(推荐用于服务)

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

然后:

systemctl daemon-reload
systemctl restart myapp

✅ 稳定、持久、生产环境首选


三、cgroups(最底层、最强大)

cgroup v1 / v2

# cgroup v2 示例
mkdir /sys/fs/cgroup/mygroup
echo 512M > /sys/fs/cgroup/mygroup/memory.max
echo 100000 > /sys/fs/cgroup/mygroup/cpu.max
echo 1234 > /sys/fs/cgroup/mygroup/cgroup.procs

✅ 容器(Docker)底层就是它
❌ 配置较复杂


四、容器方式(最简单隔离)

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

✅ 资源、文件系统、网络全隔离


五、按使用场景推荐

场景 推荐方式
临时测试 ulimit / timeout
后台服务 systemd
多进程隔离 cgroups
完整隔离 Docker / Podman

如果你能说一下:

  • 是 CPU / 内存 / 进程数 / 磁盘 IO 哪一种?
  • 是 临时运行还是长期服务?

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

0 踩