【发布时间】:2021-08-08 21:11:49
【问题描述】:
我正在学习 linux 核心,我现在正在讨论 namepsaces 主题。 我尝试使用“unshare”命令只是为了了解命名空间及其要点。 问题是它没有,或者更有可能的是,我做错了什么。 如果您能帮助我理解,我将不胜感激。 我尝试在它自己的 PID 命名空间中执行busybox sh 程序。我就是这样做的:
[ab@a ~]$ sudo unshare --pid busybox sh
/home/ab # ps
PID TTY TIME CMD
6014 pts/1 00:00:00 sudo
6016 pts/1 00:00:00 busybox
6026 pts/1 00:00:00 ps
所以我可以从 ps 命令的输出中看到,所有进程在新环境中都是可见的。当我检查新创建的进程和当前进程的 pid 命名空间 id 时,它得到确认。见下文
[ab@a ~]$ ps -p 6016,$$
PID TTY TIME CMD
4604 pts/0 00:00:00 bash
6016 pts/1 00:00:00 busybox
[ab@a ~]$ sudo ls -l /proc/4604/ns
total 0
lrwxrwxrwx. 1 ab ab 0 Aug 8 23:49 ipc -> ipc:[4026531839]
lrwxrwxrwx. 1 ab ab 0 Aug 8 23:49 mnt -> mnt:[4026531840]
lrwxrwxrwx. 1 ab ab 0 Aug 8 23:49 net -> net:[4026531968]
lrwxrwxrwx. 1 ab ab 0 Aug 8 23:49 pid -> pid:[4026531836]
lrwxrwxrwx. 1 ab ab 0 Aug 8 23:49 user -> user:[4026531837]
lrwxrwxrwx. 1 ab ab 0 Aug 8 23:49 uts -> uts:[4026531838]
[ab@a ~]$ sudo ls -l /proc/6016/ns
total 0
lrwxrwxrwx. 1 root root 0 Aug 9 00:07 ipc -> ipc:[4026531839]
lrwxrwxrwx. 1 root root 0 Aug 9 00:07 mnt -> mnt:[4026531840]
lrwxrwxrwx. 1 root root 0 Aug 9 00:07 net -> net:[4026531968]
lrwxrwxrwx. 1 root root 0 Aug 9 00:07 pid -> pid:[4026531836]
lrwxrwxrwx. 1 root root 0 Aug 9 00:07 user -> user:[4026531837]
lrwxrwxrwx. 1 root root 0 Aug 9 00:07 uts -> uts:[4026531838]
因此,尽管我为 unshare 调用提供了 --pid 参数,但 pid 命名空间保持不变。 你能帮我理解为什么会这样吗? 谢谢
【问题讨论】:
标签: namespaces linux-namespaces