为什么新 PID 命名空间中的 PID 不连续

为什么新 PID 命名空间中的 PID 不连续

我运行的是 Ubuntu 20.04。根据https://lwn.net/Articles/531419/https://stackoverflow.com/questions/3446727/how-does-linux-define-the-next-pid/3457108#3457108,分配的 PID 应该是连续的。然而,我新创建的 PID 命名空间的情况并非如此,其中第一个进程的 PID 为 1(理应如此),下一个进程的 PID 为 8。奇怪的是,PID 8 之后的每个 PID 都是按顺序分配的。

$ sudo unshare --fork --pid --mount-proc bash
root@anon:/home/anon# ps aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.0   9844  3840 pts/2    S    12:13   0:00 bash
root           8  0.0  0.0  11500  3364 pts/2    R+   12:13   0:00 ps aux

之后的其他进程被分配为 9, 10, 11 ...

我很好奇为什么最初从 1 跳到 8?如果有其他进程在运行之前被创建和终止,ps aux并且占用 PID 2-7,我如何查看这些进程是什么?我尝试查看/var/log/syslog但找不到任何有用的东西。

答案1

我很好奇为什么最初从 1 跳到 8?

当您以交互模式启动 Bash 时,会在给出提示之前读取并执行rc 文件( ~/.bashrc~/.profile如果是登录 shell,以及 中的相应系统范围文件)。/etc

如果您执行bash --norc这些 rc 文件,则不会执行,并且您的ps命令将具有预期的 PID 2。

如果在运行 ps aux 之前创建和终止了占用 PID 2-7 的其他进程,我如何查看这些进程是什么?

执行bash -x

相关内容