在 Debian 系统中,限制进程资源有多种方式,取决于你是临时限制某个命令、限制系统服务,还是限制用户/组的总体资源。下面按常见场景说明。
ulimit(当前 shell / 用户级)适合:限制当前 shell 及其启动的进程
ulimit -a
ulimit -u 100 # 最大进程数
ulimit -n 1024 # 最大打开文件数
ulimit -v 524288 # 虚拟内存(KB)
ulimit -t 60 # CPU 时间(秒)
ulimit -f 100000 # 文件大小(KB)
⚠️ 只对当前 shell 有效,退出即失效。
编辑:
/etc/security/limits.conf
示例:
username soft nproc 100
username hard nproc 200
需要 PAM 支持(pam_limits.so)。
systemd(推荐,服务级)适合:限制 systemd 管理的服务
systemctl status nginx
systemctl edit nginx
示例:
[Service]
MemoryMax=512M
TasksMax=100
CPUQuota=50%
LimitNOFILE=1024
应用:
systemctl daemon-reload
systemctl restart nginx
常用参数:
MemoryMaxCPUQuotaTasksMaxIOWeightLimitNOFILE✅ 最推荐用于服务器环境
systemd-run(临时限制命令)适合:临时运行一个受限进程
systemd-run --scope -p MemoryMax=200M -p CPUQuota=30% bash
或:
systemd-run --user --scope -p MemoryMax=100M top
cgroups(高级/精细控制)适合:多进程、容器级控制
mkdir /sys/fs/cgroup/mygroup
echo 200M > /sys/fs/cgroup/mygroup/memory.max
echo $$ > /sys/fs/cgroup/mygroup/cgroup.procs
⚠️ 需要 root 和 cgroup 支持
nice / cpulimit(CPU 限制)nice -n 10 command
cpulimit -l 40 -- command
timeout(时间限制)timeout 30s ./program
| 场景 | 推荐方式 |
|---|---|
| 限制某个命令 | systemd-run / ulimit |
| 限制服务 | systemctl edit |
| 限制用户 | limits.conf |
| 容器/多进程 | cgroups |
| 限制 CPU | cpulimit |
如果你能说明:
我可以给你更精确的配置示例。