Como mover o processo de um namespace para outro?

5

Esta questão é semelhante à minha pergunta sobre como para listar namespaces . Então, em adição, eu gostaria de saber algumas informações sobre como mover processos de um namespace para outro? Por exemplo. Eu tenho processos da sessão atual em um namespace e alguns outros processos do contêiner lxc no namespace diferente, portanto, quero executar (por exemplo, links ) no cgroup desse contêiner (é fácil fazer com cgexec ) e depois movê-lo para namespace do contêiner, porque eu tenho que executar esse processo no contêiner sem executá-lo exatamente nele. Pode ser feito ou impossível no Linux?

    
por zerospiel 05.02.2014 / 20:01

1 resposta

0

Você não precisa executar o processo em alguns grupos de controle se já estiver em determinado espaço de nomes, em vez disso, terá que manipular com namespaces. Todo o novo processo em um novo espaço de nomes "herdará" todos os grupos de controle relacionados a esse namespace.

Mover processos entre diferentes namespaces pode ser feito com a função setns () ou você pode usar o comando nsenter de util-linux para inserir um novo namespace e executar novas tarefas em isto. Tudo que você precisa é saber o PID do processo, que já é um novo namespace, então você pode usar (no caso de você querer executar links ):

# nsenter --PID --target pid_in_ns_you_want_to_enter && links

É uma fraude, porque você não move processos, você acabou de entrar no namespace e executando novos processos, mas com essa possibilidade você pode entrar em certos NS e então fork já em execução em outro processo NS. / p>     

por 09.05.2014 / 14:57