问题描述
我想使用Linux控制组(cgroup)限制多个进程的CPU和RAM使用。如果进程是Process 1
和Process 2
且子进程为Process 2 Sub
,这是否是正确的最小命令语法:
sudo systemd-run --scope -p MemoryHigh=200M Process\ 1
-p MemoryHigh=200M Process\ 2
-p MemoryHigh=200M Process\ 2\ Sub
-p MemoryMax=250M Process\ 1
-p MemoryMax=250M Process\ 2
-p MemoryMax=250M Process\ 2\ Sub
-p CPUQuota=10% Process\ 1
-p CPUQuota=10% Process\ 2
-p CPUQuota=10% Process\ 2\ Sub
我不确定正确的进程ID(完整路径吗?进程名称?),选项的“链接”,区分大小写,转义空格,是否自动包含子进程(此处为Process 2 Sub
)限制强加或需要单独控制,并且每次启动该过程时都需要运行此命令,或者设置是否永久。谢谢!
解决方法
systemd-run创建一个新的作用域并在其中运行一个程序。
使用的语法为:systemd-run --scope -p MemoryMax=250M -p MemoryHigh=200M /path/to/program/to/use