Linux 列出所有网络命名空间

Gar*_*uno 13 networking linux namespaces

我想列出我的 Linux 机器上的所有网络命名空间。到目前为止,我找到了两种推荐的方法来做到这一点:

ip netns list
Run Code Online (Sandbox Code Playgroud)

lsns --type=net
Run Code Online (Sandbox Code Playgroud)

不幸的是,这两个命令都没有列出所有名称空间!第一个仅列出在 /var/run/netns 中找到的命名空间,第二个将仅查找至少有一个进程在其中运行的命名空间。例如,Docker 会将其命名空间保存在 /var/run/docker/netns 中(因此它们不会通过 ip netns 显示),并且有一些命名空间没有正在运行的进程(因此它们不会通过 lsns 显示)。是否有任何命令可以打印主机上的所有网络名称空间?

Gar*_*uno 4

我再次遇到了这个缺点,并在存储库中lsns提出了一个问题。它已经被修复,在未来的版本lsns中将显示所有命名空间,甚至是那些仅安装且没有进程在其中运行的命名空间。与此同时,这些信息实际上可以在 中获得/proc/mounts。所有具有该类型的挂载都nsfs应该挂载命名空间。这不限于网络命名空间,而是涵盖所有命名空间。