有一个进程在其自己的网络命名空间中运行。我想远程登录到计算机并在该进程网络命名空间中运行一个命令,如下所示(17543 是具有其自己的网络命名空间的进程的 pid):
# ip netns exec /proc/17543/ns/net ifconfig
Cannot open network namespace "/proc/17543/ns/net": No such file or directory
# ls /proc/17543/ns/net
/proc/17543/ns/net
它抱怨网络命名空间不存在,但看起来文件在那里。我如何在另一个进程网络命名空间中运行命令?
答案1
$ sudo nsenter -t 16882 -n ip link show
在哪里ip 链接显示是在 pid 为 16882 的目标程序的网络命名空间中运行的命令示例。
-t 标志用于指定目标程序的 pid
-n 标志代表目标程序的网络命名空间
答案2
ip netns exec
预计姓名网络命名空间,而不是文件路径。
您可以使用 找到进程的网络命名空间名称ip netns identify <pid>
。
PSifconfig
可能未安装在现代 Linux 系统上;请使用等效ip
命令。