Como remover todos os namespaces de rede de uma vez no Linux
Pergunta: Criei vários namespaces de rede e agora desejo removê-los todos. Existe uma maneira de excluir todos os namespaces de rede existentes de uma só vez na linha de comando no Linux?
No Linux, o conceito de "namespaces" foi introduzido como uma forma de isolar os recursos do sistema entre diferentes grupos de processos. Como um dos seis tipos diferentes de namespaces do Linux, os namespaces de rede isolam logicamente os recursos do sistema associados à rede (por exemplo, dispositivos de rede, endereços IP, tabela de roteamento) entre diferentes grupos de processos, dando assim a cada grupo de processos uma exibição da pilha de rede do host. Esse recurso é popularmente usado para virtualização no nível do sistema operacional.
Os namespaces de rede Linux podem ser criados e removidos pelo comando ip
da seguinte forma.
$ sudo ip netns add <namespace-name>
$ sudo ip netns del <namespace-name>
Suponha que você queira limpar todos os namespaces existentes em seu sistema Linux. Claro que você pode excluir cada namespace um por um com o comando ip
acima, mas isso pode ser complicado. Aqui está como remover todos os namespaces de rede da linha de comando.
Método um
O comando ip
vem do pacote iproute2
. O pacote iproute2
mais recente permite que o comando ip
execute uma ação especificada para todos os objetos (por exemplo, para todos os namespaces existentes). Para isso, oferece a opção -all
.
Por exemplo, no Ubuntu 15.10 ou Fedora 23, o comando ip
pode remover todos os namespaces de uma só vez com a opção -all
.
$ sudo ip -all netns delete
No entanto, se o seu sistema Linux não tiver o pacote iproute2
compatível instalado, você encontrará o seguinte erro.
Option "-all" is unknown, try "ip -help".
Método Dois
Para aqueles que não têm o pacote iproute2
mais recente instalado, você pode excluir todos os namespaces de rede usando uma combinação de xargs
e ip
da seguinte maneira .
$ ip netns | xargs -I {} sudo ip netns delete {}
Basicamente, você canaliza a lista de namespaces de várias linhas para xargs
, que executará o comando ip
para cada namespace.