您可以查看
/proc/<pid>/status文件以确定名称空间PID和全局PID之间的映射。例如,如果在docker容器中我启动了多个
sleep900过程,如下所示:
# docker run --rm -it alpine sh/ # sleep 900 &/ # sleep 900 &/ # sleep 900 &
我可以看到它们在容器中运行:
/ # ps -fePID USER TIME COMMAND 1 root 0:00 sh 7 root 0:00 sleep 900 8 root 0:00 sleep 900 9 root 0:00 sleep 900 10 root 0:00 ps -fe
我可以在主机上查看这些:
# ps -fe | grep sleeproot 10394 10366 0 09:11 pts/10 00:00:00 sleep 900root 10397 10366 0 09:12 pts/10 00:00:00 sleep 900root 10398 10366 0 09:12 pts/10 00:00:00 sleep 900
对于其中任何一个,我可以查看
status文件以查看名称空间pid:
# grep -i pid /proc/10394/statusPid: 10394PPid: 10366TracerPid: 0NSpid: 10394 7
看这
NSpid行,我可以看到在PID名称空间中,该进程具有pid7。确实,如果我
10394在主机上终止了该进程:
# kill 10394
然后在容器中,我看到PID 7不再运行:
/ # ps -fePID USER TIME COMMAND 1 root 0:00 sh 8 root 0:00 sleep 900 9 root 0:00 sleep 900 11 root 0:00 ps -fe



