LinuxでPIDSが(通常)4ずつ増加するのはなぜですか?私が考えることができる唯一の例外はsystemdが実行する起動プロセスですが、関連する場合は1を追加し、そうでない場合は2を追加します。
数字4はどのようにデフォルトとして選択されましたか?変更できますか?
答え1
PIDに1を加えたものです。
2 つのシェルを起動します。
シェル1
echo $$
# we assume 1234 as output
シェル2
strace -f -p 1234 -e trace=clone
シェル1
sleep 1 ; sleep 1
シェル2
# output like
clone(Process 25484 attached
child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f4111a029d0) = 25484
[pid 25484] +++ exited with 0 +++
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=25484,si_status=0, si_utime=0, si_stime=0} ---
clone(Process 25485 attached
child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f4111a029d0) = 25485
[pid 25485] +++ exited with 0 +++
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=25485, si_status=0, si_utime=0, si_stime=0} ---
clone(Process 25486 attached
child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD,child_tidptr=0x7f4111a029d0) = 25486
[pid 25486] +++ exited with 0 +++
答え2
特定のパッチを除いて(たとえば、gr-security
4の増加が表示されている場合は、シェルが毎回追加のコマンドを実行するためです(例:viavariables)$PROMPT_COMMAND
。