如何在 Linux 上一次删除所有网络命名空间如何在 Linux 上一次删除所有网络命名空间如何在 Linux 上一次删除所有网络命名空间如何在 Linux 上一次删除所有网络命名空间
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Linux 上一次删除所有网络命名空间

问题:我创建了多个网络命名空间,现在我想将它们全部删除。有没有办法从 Linux 上的命令行一次性删除所有现有的网络命名空间?

在 Linux 中,引入了“命名空间”的概念,作为在不同进程组之间隔离系统资源的一种方法。作为六种不同类型的 Linux 命名空间之一,网络命名空间在逻辑上隔离了不同进程组之间与网络相关的系统资源(例如网络设备、IP 地址、路由表),从而为每个进程组提供了主机网络堆栈的不同视图。此功能广泛用于操作系统级虚拟化。

Linux 网络命名空间可以通过 ip 命令创建和删除,如下所示。


$ sudo ip netns add <namespace-name>
$ sudo ip netns del <namespace-name>

假设您想要清理 Linux 系统上所有现有的命名空间。当然你可以通过上面的ip命令将每个命名空间一一删除,但是这样可能比较麻烦。以下是如何从命令行删除所有网络命名空间。

方法一

ip 命令来自 iproute2 包。最新的 iproute2 包允许 ip 命令对所有对象(例如,对所有现有的命名空间)执行指定的操作。为此,它提供了 -all 选项。

例如,在 Ubuntu 15.10 或 Fedora 23 上,ip 命令可以使用 -all 选项一次性删除所有命名空间。


$ sudo ip -all netns delete

但是,如果您的Linux系统没有安装兼容的iproute2软件包,您将遇到以下错误。


Option "-all" is unknown, try "ip -help".

方法二

对于那些没有安装最新 iproute2 软件包的人,您可以使用 xargs 和 ip 组合删除所有网络命名空间,如下所示。


$ ip netns | xargs -I {} sudo ip netns delete {}

基本上,您将多行命名空间列表通过管道传输到 xargs,然后它将为每个命名空间运行 ip 命令。

©2015-2025 艾丽卡 support@alaica.com