Я хотел бы иметь возможность создать одноразовую временную группу в иерархии. Например:
#!/bin/sh
run_with_csubgroup /sys/fs/cgroup/group/subgroup/
Что создает группу, скажем /sys/fs/cgroup/group/subgroup/5G7ds/
(5G7ds — это одноразовое имя — это может быть идентификатор или что-то еще).
Я хотел бы удалить группу автоматически, но не знаю, как это сделать легко, и склонен говорить TERM signal (из actidental C-c).
Есть ли способ это сделать? Я использую Gentoo+systemd.
решение1
Вы можете запустить свою(ие) команду(ы) через systemd-run --scope
. Это создаст временную (т.е. временную) cgroup для вашей команды. Затем вы можете изменить cgroup в соответствии со своими потребностями. Используйте systemd-cgls
для поиска вашего процесса в иерархии cgroup в /sys/fs/cgroup
.
Согласноman-страница systemd-run
systemd-run можно использовать для создания и запуска временной службы .service или временного таймера .timer или модуля .scope и выполнения в нем указанной КОМАНДЫ.
Вы также можете указать ограничения для вашего подразделения через systemd-run
команду, используя --property
флаг (разрешено более одного раза). Для доступных свойств вы можете проверить с помощьюsytemd.resource-control страница руководства.
Если вы захотите задать свойства позже, вы можете использовать systemd set-property
.
Помните, что хорошей идеей будет указать название вашего подразделения вместе с флагом --unit=yourname
, чтобы вы могли легко получить к нему доступ.
Есть очень хороший текст оновый интерфейс группы управления, что я настоятельно рекомендую. Также,Руководство по управлению ресурсами Red Hat Enterprise Linux 7 и контейнерам Linuxдает очень четкое описание того, как использовать cgroups с systemd.
решение2
Вам может потребоваться указать определенное время жизни для вашей группы; вы можете захотеть, чтобы она включалась после запуска компьютера и удалялась после выключения. Так что неплохая идея добавить ее в ваши /etc/rc
скрипты.
решение3
Не уверен, что правильно понял, но разве вы не можете просто:
~] umount /sys/fs/cgroup/group/subgroup/5G7ds/
~] rmdir /sys/fs/cgroup/group/subgroup/5G7ds/
Вышеприведенный код отмонтирует cgroup и удалит ее.