입력하면 ps -ef
프로세스 목록이 나타납니다. PID 번호가 왜 연속적이지 않습니까?
입력하면 ps -ef
프로세스 목록이 나타납니다. PID 번호가 왜 연속적이지 않습니까?
답변:
우분투에서 그들은 연속적입니다. 다른 운영 체제에서는 다를 수 있습니다.
커널은 (RESERVED_PIDS, PID_MAX_DEFAULT) 범위에서 PID를 할당합니다. 각 네임 스페이스에서 순차적으로 수행됩니다 (다른 네임 스페이스의 작업은 동일한 ID를 가질 수 있음). 범위가 소진되면 pid 할당이 줄 바꿈됩니다.
( /programming/3446727/how-does-linux-determine-the-next-pid )
그래도 마음은 ...
stackoverflow에 대한 몇 가지 주제 :
주석에는 PID의 가정을 테스트하는 명령이 있습니다.
for i in {1..20}; do sh -c 'echo $$'; done
일반적으로 PID는 연속적이지만 명령을 실행할 때만 일부 프로세스가 종료됩니다 ps -ef
.
또한 일부 프로세스는 ps -ef
명령에 표시되지 않은 다른 프로세스의 하위 프로세스 일 수 있습니다 . 확장 된 결과를보고 연속 PID를 확인하려면pstree
pstree -p
샘플 출력 :
├─teamviewerd(3468)─┬─{teamviewerd}(3474)
│ ├─{teamviewerd}(3475)
│ ├─{teamviewerd}(3476)
│ ├─{teamviewerd}(3477)
│ ├─{teamviewerd}(3478)
실행 ps -ef
하면 부모 프로세스 만 보입니다.
$ ps -ef | grep teamviewerd
root 3468 1 0 Jul15 ? 00:07:38 /opt/teamviewer9/tv_bin/teamviewerd -f