新しい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に跳んだのだろうか。 PID 2-7を実行して占有する前に作成および終了した他のプロセスがある場合は、そのプロセスが何であるかをどうやってps aux知ることができますか?探してみましたが、/var/log/syslog役に立つものが見つかりませんでした。

ベストアンサー1

最初はなぜ1から8に跳んだのだろうか。

Bashをインタラクティブモードで起動すると、プロンプトが表示される前にrcファイル(ログインシェルの場合は対応するシステム全体のファイル)を読み込み、実行します~/.bashrc~/.profile/etc

これらのrcファイルを実行すると、実行されbash --norcず、psコマンドに予想されるPID 2が表示されます。

ps auxを実行する前にPID 2-7を占める別のプロセスが作成され終了した場合、そのプロセスが何であるかをどうやって知ることができますか?

実装するbash -x

おすすめ記事