Создание одноразовой cgroup

Создание одноразовой cgroup

Я хотел бы иметь возможность создать одноразовую временную группу в иерархии. Например:

#!/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 и удалит ее.

Связанный контент