当前位置: 首页 > 知识库问答 >
问题:

linux - 为什么 readlink /proc/self/ns/net 查看当前进程的网络命名空间的id,返回的id 在ip netns list-id命令的返回值中找不到?

潘皓
2024-04-25
controlplane $ ip netns list-idnsid 0 (iproute2 netns name: cni-5672c41c-5cde-cefa-54d6-59da761e0d1e)nsid 1 (iproute2 netns name: cni-c96f0755-7e60-7ed1-778e-01cbdda7dc31)nsid 2 (iproute2 netns name: cni-5201ae54-8724-fca0-9087-98cd7375d509)controlplane $ readlink /proc/self/ns/netnet:[4026531992]

为什么 readlink /proc/self/ns/net 查看当前进程的网络命名空间的id,返回的id 在ip netns list-id命令的返回值中找不到

共有1个答案

陆高峰
2024-04-25

readlink /proc/self/ns/net 返回的是当前进程所在的网络命名空间的 inode 编号,而不是你在 ip netns list-id 命令中看到的命名空间 ID。这两个 ID 是不同的,因为它们是不同系统组件用于识别命名空间的内部表示。

  • readlink /proc/self/ns/net 返回的 inode 编号是 Linux 内核用来唯一标识命名空间的。这个 inode 编号是一个内部细节,通常不直接用于用户空间操作。
  • ip netns list-id 命令列出的是用户空间可以通过 ip 命令管理的网络命名空间的 ID。这些 ID 是 ip 命令为了方便用户管理而分配的,可能与内核的 inode 编号不同。

这两个 ID 之间没有直接的映射关系。ip netns list-id 显示的 ID 列表只包含了那些通过 ip 命令创建或管理的网络命名空间。而 readlink /proc/self/ns/net 显示的 inode 编号代表了当前进程所在的网络命名空间,这个命名空间可能是由多种不同的方式创建的,比如通过 clone() 系统调用或使用容器技术(如 Docker、Kubernetes)等。

因此,你在 readlink /proc/self/ns/net 中看到的 inode 编号可能不在 ip netns list-id 的输出中,因为这两个命令用于展示不同类型的命名空间,并且它们之间没有直接的对应关系。如果你想要查看当前进程所在的网络命名空间的详细信息,你可能需要使用其他工具或命令,比如 nsenterip netns exec,这些命令可以让你在当前命名空间中执行命令并查看其状态。

 类似资料:
  • 返回当前连接网络的ID。 调用: web3.eth.net.getId([callback]) web3.bzz.net.getId([callback]) web3.shh.net.getId([callback]) 参数: 无 返回值: 一个Promise对象,其解析值为网络ID。 示例代码: web3.eth.net.getId() .then(console.log); > 1

  • 问题内容: 今天,我了解并决定将其使用和测试。我知道整数是不可变的,因此id应该是(?)相同。但是,当我在提示中进行测试时,我注意到了一些细微的差异,并想找出其背后的原因。 凉!到目前为止,所有签出。但是之后… 好的,所以测试一下,我注意到此行为一直持续到256年。id最多可以是8位数字,然后257将返回更大的id,可以是15位数字。因此类型必须是8个字节。 所以我发现它与8个字节长有关,但是任何

  • id 命令 可以查询用户的UID、GID 和附加组的信息。命令比较简单,格式如下: [root@localhost ~]# id 用户名 【例 1】 [root@localhost ~]# id lamp uid=501(lamp) gid=501(lamp) groups=501(lamp) #能看到uid(用户ID)、gid(初始组ID), groups是用户所在组,这里既可以看到初始组,如果

  • 问题内容: 我有索引URI 我将文件推送到此处,ID由SQL-DB预生成 这是来自JAVA客户端的代码示例: 有时我需要查看索引中ID的最大值,然后发送此查询 问题在于,ElasticSearch始终返回的值不超过 当我执行查询查询时: } 实际结果处于正确状态,我所有的ID都超过了9999,并按 返回正确的结果。 请告知我如何解决这种情况 问题答案: 原因是您的ID是字符串,并且字符串是按字典顺

  • 延迟函数可以读取并分配给返回函数的命名返回值。 我想程序员的意图是返回1作为结果,并想知道为什么它被重写,以及后面的设计决策是什么。

  • 问题内容: 这个问题已经在这里有了答案 : 7年前关闭。 可能重复: 如何从PHP的MySql响应中“回显”“资源ID#6”? 我是php和SQL的新手,我正在尝试使php页面列出表中的枚举数。我正在使用此代码,但它返回资源ID#2: 问题答案: 因为执行时会获得mysql资源。 使用类似的方法来获取下一行。它返回一个以列名作为索引的数组。就您而言,可能是。 这是您的代码段的修复程序和一些小改进: