Linux에서 PIDS가 (일반적으로) 4씩 증가하는 이유는 무엇입니까? 내가 생각할 수 있는 유일한 예외는 systemd가 실행하는 시작 프로세스인데, 관련되면 1을 추가하고 그렇지 않으면 2를 추가합니다.
숫자 4는 어떻게 기본값으로 선택되었나요? 변경될 수 있나요?
답변1
PID에 1을 더한 것입니다.
두 개의 쉘을 시작하십시오.
쉘 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
.