为什么Linux下的PIDS(一般)会增加4?我能想到的唯一例外是由 systemd 运行的启动进程,当它们相关时该进程加 1,否则加 2。
数字 4 是如何被选为默认值的?它可以更改吗?
答案1
PID 加一。
启动两个 shell。
外壳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,这可能是由于您的 shell 每次都执行一些额外的命令,例如通过变量$PROMPT_COMMAND
。