В обычном сценарии вы устанавливаете cgcreate
, cgset
, cgdelete
, cgget
и т. д. как корень . В конце концов, программа/скрипт, предназначенный для ограничения использования многих ресурсов, будет выполняться как обычный пользователь. Итак, настройте как root, используйте и выполняйте как пользователь.
Это делается с помощью параметров -a
и -t
команды cgcreate
(, выполняемой от имени пользователя root ). Итак, уже при создании группы. В моем случае:
cgcreate -t monero:monero -a monero:monero -g memory,cpu:monerogroup
где monero — имя пользователя будущего пользователя, который будет выполнять и запускать программу с ограничениями cgroup. Тонкую разницу между подпараметрами -a
и -t
можно найти на справочных страницах cgcreate
.
man cgcreate
В большинстве случаев это один и тот же пользователь.
Затем установите ограничения (как root):
cgset -r memory.limit_in_bytes=$((4*1024*1024*1024)) monerogroup
cgset -r cpu.shares=128 monerogroup
Проверьте свои записи, если хотите:
cgget -g memory:/monerogroup | grep bytes
А затем, в конце концов, переключите пользователя, в моем случае пользователя monero, и из нужной папки:
cgexec -g memory,cpu:monerogroup./monerod
У пользователя не возникнет проблем с разрешениями, если вы настроите их специально для него.