温馨提示×

如何限制debian进程资源

小樊
48
2026-09-16 19:09:14
栏目: 智能运维

在 Debian 系统中,限制进程资源可以从临时限制(运行单个命令)、用户/组级限制(长期)、以及**系统化(systemd / cgroup)**几个层面来做。下面按常见场景说明。


一、使用 ulimit 限制(当前 shell / 用户)

1. 查看当前限制

ulimit -a

2. 临时限制(只对当前 shell 及其子进程有效)

ulimit -u 100        # 最大进程数
ulimit -n 1024       # 最大文件描述符
ulimit -v 524288     # 虚拟内存(KB)
ulimit -m 262144     # 物理内存(KB,部分系统不生效)
ulimit -t 60         # CPU 时间(秒)
ulimit -f 1048576    # 文件大小(KB)

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


二、对用户/组永久限制(/etc/security/limits.conf)

1. 编辑限制文件

sudo nano /etc/security/limits.conf

2. 示例

www-data soft nproc 200
www-data hard nproc 300
appuser  soft nofile 4096
appuser  hard nofile 8192

说明:

  • soft:软限制(可临时超过)
  • hard:硬限制(不可超过)
  • 需要 PAM + login shell 才生效

3. 确保 PAM 启用

grep pam_limits /etc/pam.d/common-session

应有:

session required pam_limits.so

✅ 适用于 SSH / 登录用户,不适用于 systemd 服务


三、使用 systemd 限制服务资源(推荐)

1. 编辑 service 文件

sudo systemctl edit yourapp.service

2. 示例限制

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

3. 重载并重启

sudo systemctl daemon-reload
sudo systemctl restart yourapp

✅ 这是 Debian 现代系统最推荐方式


四、使用 cgroups(高级 / 精细控制)

1. 安装工具

sudo apt install cgroup-tools

2. 创建 cgroup

sudo cgcreate -g memory,cpu:/mygroup
sudo cgset -r memory.limit_in_bytes=512M mygroup
sudo cgset -r cpu.cfs_quota_us=50000 mygroup

3. 运行进程

sudo cgexec -g memory,cpu:/mygroup mycommand

✅ 适合批量进程、容器式隔离


五、使用 nice / cpulimit(CPU 软限制)

1. 调整优先级

nice -n 10 ./myprogram

2. 限制 CPU 使用率

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

⚠️ 非硬限制,可能被绕过


六、限制网络资源(可选)

  • tc(流量控制)
  • iptables / nftables 限速
  • 容器(Docker --network 限制)

总结建议

场景 推荐方式
临时运行命令 ulimit
限制登录用户 limits.conf
后台服务 systemd
多进程/容器 cgroups
CPU 软控 nice / cpulimit

如果你能说明 限制什么资源(CPU / 内存 / 进程数 / 网络)以及使用场景(服务 / 脚本 / 用户),我可以给你更精确的配置示例。

0 踩