首页 > 其他 > 详细

nsenter 常用操作

时间:2021-05-17 13:12:40      阅读:12      评论:0      收藏:0      [点我收藏+]

nsenter 是一个可以用来进入到目标程序说在 namespace 中运行命令的工具,一般可以用于在容器外 debug 容器中运行的程序。简单记录一下 nsenter 的常用用法。

常用参数
最常用的参数组合是:

# 有的版本不一定有 -a 这个参数
nsenter -a -t <pid> <command>
nsenter -m -u -i -n -p -t <pid> <command>

参数的含义如下:

-a, --all enter all namespaces of the target process by the default /proc/[pid]/ns/* namespace paths.
-m, --mount[=] enter mount namespace
-u, --uts[=] enter UTS namespace (hostname etc)
-i, --ipc[=] enter System V IPC namespace
-n, --net[=] enter network namespace
-p, --pid[=] enter pid namespace
-t, --target target process to get namespaces from

结合 docker 使用用于在某个容器的 namespace 中运行指定程序的常用命令是:

PID=$(docker inspect --format {{.State.Pid}} <container_name_or_ID>)
nsenter -m -u -i -n -p -t $PID <command>

或者

$ ps -elf|grep sshd
$ nsenter --target <PID> --mount --uts --ipc --net --pid

例子:

$ docker run --rm --name test -d busybox  sleep 10000
8115009baccc53a2a5f6dfff642e0d8ab1dfb95dde473d14fb9a06ce4e89364c

$ docker ps |grep busybox
8115009baccc        busybox             "sleep 10000"            9 seconds ago       Up 8 seconds                            test

$ PID=$(docker inspect --format {{.State.Pid}} 8115009baccc)

$ nsenter -m -u -i -n -p -t $PID ps aux
PID   USER     TIME  COMMAND
    1 root      0:00 sleep 10000
    7 root      0:00 ps aux

$ nsenter -m -u -i -n -p -t $PID hostname
8115009baccc

nsenter 常用操作

原文:https://www.cnblogs.com/gaohongyu/p/14776189.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!