如何在另一个进程的网络命名空间中运行命令?

如何在另一个进程的网络命名空间中运行命令?

有一个进程在其自己的网络命名空间中运行。我想远程登录到计算机并在该进程网络命名空间中运行一个命令,如下所示(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命令。

相关内容