Prefácio: Eu não estou 100% familiarizado com o systemd e os conceitos de arquivos unitários, mas fiz algumas leituras.
Contexto: Eu quero mover um processo de uma árvore do cgroup para outra, na distribuição do systemd e (não-systemd, digamos, upstart). Mais especificamente, vamos dizer que a árvore do cgroup se parece com isso.
Basicamente, hierarquia parece com isso em relação a my_root
my_root
|
______ ___________
| |
d11 d12
(P lives here) |
___________
| |
d21 d22
então P se move sob d21 ou
my_root
|
______ ___________
| |
d11 d12
|
___________
| |
d21 d22
(P lives here now)
Para completar, vamos dizer
my_root = /sys/fs/cgroups/cpu,cpuacct/my_root
Vamos falar sobre o bucket não-systemd: Se eu estou rodando em uma distro que não está rodando systemd, posso apenas fazer um eco do pid de P1
em cgroups.procs
de d21
e então ele moverá meu processo para esse cgroup.
E agora o caso de uso systemd
, e é disso que estou inseguro, digamos que faço a mesma coisa que fiz anteriormente, há duas coisas que podem acontecer.
Eu quero evitar o último.
Basicamente eu estou pensando que quando estou especificando o arquivo de unidade para o meu aplicativo eu quero apropriar-se do cgroup que o aplicativo é lançado, por exemplo o aplicativo assume a propriedade de my_root
cgroup, para que systemd não interfira no processo mover.
Agora para a pergunta com várias partes.
recurso: link
Tags permissions systemd linux