Process

為什麼新 PID 命名空間中的 PID 不連續

  • May 11, 2021

我正在執行 Ubuntu 20.04。根據https://lwn.net/Articles/531419/>和<https://stackoverflow.com/questions/3446727/how-does-linux-determine-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跳到8?

當您以互動模式啟動 Bash 時,會讀取並執行 rc 文件(~/.bashrc如果登錄~/.profileshell 和 中的相應系統範圍的文件),然後再提示您。/etc

如果您執行bash --norc這些 rc 文件,則不會執行,並且您的ps命令將按預期具有 PID 2。

如果在執行 ps aux 之前創建並殺死了佔用 PID 2-7 的其他程序,我如何查看這些程序是什麼?

執行bash -x

引用自:https://unix.stackexchange.com/questions/649281