Gostaria de poder criar um grupo temporário único na hierarquia. Por exemplo:
#!/bin/sh
run_with_csubgroup /sys/fs/cgroup/group/subgroup/
O que cria um grupo, digamos /sys/fs/cgroup/group/subgroup/5G7ds/
(5G7ds é um nome único - pode ser um ID ou qualquer coisa).
Gostaria de excluir o grupo automaticamente, mas não sei como fazê-lo facilmente e tenho tendência a dizer o sinal TERM (de actidental C-c).
Existe uma forma de fazer isso? Estou usando o Gentoo + systemd.
Responder1
Você pode executar seus comandos via systemd-run --scope
. Isto cria um cgroup transitório (ou seja, temporário) para o seu comando. Você pode então modificar o cgroup de acordo com suas necessidades. Use systemd-cgls
para encontrar seu processo na hierarquia do cgroup em /sys/fs/cgroup
.
De acordo compágina de manual do systemd-run
systemd-run pode ser usado para criar e iniciar um .service transitório ou um .timer transitório ou uma unidade .scope e executar o COMMAND especificado nele.
Você também pode especificar restrições para sua unidade através do systemd-run
comando usando o --property
sinalizador (mais de uma vez é permitido). Para propriedades disponíveis você pode verificar com opágina de manual sytemd.resource-control.
Se quiser definir propriedades posteriormente, você pode usar systemd set-property
.
Lembre-se de que é uma boa ideia fornecer um nome para sua unidade junto com a --unit=yourname
bandeira, para que você possa acessá-la facilmente.
Há um texto muito bom sobrea nova interface do grupo de controle, o que recomendo fortemente. Também oGuia de gerenciamento de recursos e contêineres Linux do Red Hat Enterprise Linux 7fornece uma descrição muito clara de como usar cgroups com systemd.
Responder2
Talvez seja necessário especificar um tempo de vida específico para o seu grupo; você pode querer ativá-lo após a inicialização do computador e excluí-lo após o desligamento. Portanto, não é uma má ideia adicioná-lo aos seus /etc/rc
scripts.
Responder3
Não tenho certeza se entendi corretamente, mas você não pode simplesmente:
~] umount /sys/fs/cgroup/group/subgroup/5G7ds/
~] rmdir /sys/fs/cgroup/group/subgroup/5G7ds/
O procedimento acima desmonta o cgroup e o remove.