为什么 ps 显示新 pid 命名空间中的所有进程?
Why does ps show all processes in a new pid namespace?
如果我使用 unshare 创建一个新的 PID 命名空间
sudo unshare -pf /bin/sh
和运行 ps ux,
# ps ux | head
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 160536 9968 ? Ss 11:37 0:18 /sbin/init splash
root 2 0.0 0.0 0 0 ? S 11:37 0:00 [kthreadd]
root 4 0.0 0.0 0 0 ? I< 11:37 0:00 [kworker/0:0H]
root 6 0.0 0.0 0 0 ? I< 11:37 0:00 [mm_percpu_wq]
root 7 0.0 0.0 0 0 ? S 11:37 0:00 [ksoftirqd/0]
root 8 0.1 0.0 0 0 ? I 11:37 1:07 [rcu_sched]
root 9 0.0 0.0 0 0 ? I 11:37 0:00 [rcu_bh]
root 10 0.0 0.0 0 0 ? S 11:37 0:00 [migration/0]
root 11 0.0 0.0 0 0 ? S 11:37 0:00 [watchdog/0]
它显示所有正在 运行ning 的进程,包括根命名空间中的进程。
但是,新命名空间中的当前进程的 PID 为 1,并且与 ps.
的输出中的 PID 1 不是同一个进程
# echo $$
1
不应该隔离新命名空间中的进程吗?
我不能给你一个很好的答案,但关键是当你输入
到一个新的 pid 名称space 你同时留在同一个安装名称space。
command ps 使用 /proc 获取统计信息。 /proc 仍然有点相同或几乎相同,因此 ps 读取 /proc 并查看有关主机 pid 名称的所有信息 space。为了获得理想的情况,您不仅需要创建 pid 名称space,还需要创建新的挂载名称space。在这种情况下 ps 将不会显示任何 "extra" 信息。
好消息,当您使用新的 pid 名称space 时,您无法终止主机名 space 中的任何进程,尽管您看到了。您可以在此处找到更好的解释 - https://josephmuia.ca/2018-09-19-ps-proc-and-the-pid-namespace/
如果我使用 unshare 创建一个新的 PID 命名空间
sudo unshare -pf /bin/sh
和运行 ps ux,
# ps ux | head
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 160536 9968 ? Ss 11:37 0:18 /sbin/init splash
root 2 0.0 0.0 0 0 ? S 11:37 0:00 [kthreadd]
root 4 0.0 0.0 0 0 ? I< 11:37 0:00 [kworker/0:0H]
root 6 0.0 0.0 0 0 ? I< 11:37 0:00 [mm_percpu_wq]
root 7 0.0 0.0 0 0 ? S 11:37 0:00 [ksoftirqd/0]
root 8 0.1 0.0 0 0 ? I 11:37 1:07 [rcu_sched]
root 9 0.0 0.0 0 0 ? I 11:37 0:00 [rcu_bh]
root 10 0.0 0.0 0 0 ? S 11:37 0:00 [migration/0]
root 11 0.0 0.0 0 0 ? S 11:37 0:00 [watchdog/0]
它显示所有正在 运行ning 的进程,包括根命名空间中的进程。 但是,新命名空间中的当前进程的 PID 为 1,并且与 ps.
的输出中的 PID 1 不是同一个进程# echo $$
1
不应该隔离新命名空间中的进程吗?
我不能给你一个很好的答案,但关键是当你输入 到一个新的 pid 名称space 你同时留在同一个安装名称space。
command ps 使用 /proc 获取统计信息。 /proc 仍然有点相同或几乎相同,因此 ps 读取 /proc 并查看有关主机 pid 名称的所有信息 space。为了获得理想的情况,您不仅需要创建 pid 名称space,还需要创建新的挂载名称space。在这种情况下 ps 将不会显示任何 "extra" 信息。
好消息,当您使用新的 pid 名称space 时,您无法终止主机名 space 中的任何进程,尽管您看到了。您可以在此处找到更好的解释 - https://josephmuia.ca/2018-09-19-ps-proc-and-the-pid-namespace/