살해된 후에도 동일한 PID가 사용됩니까?

살해된 후에도 동일한 PID가 사용됩니까?

편집기를 사용하여 파일을 열었습니다 vim. 세션 중이었는데 ssh오랫동안 접속하지 않아서 세션이 종료되어 다시 연결을 설정해야 했습니다. 편집기를 사용하여 파일을 다시 열었고 vim다음과 같이 보고되었습니다.

E325: ATTENTION
Found a swap file by the name ".latest2.sh.swp"
          owned by: ramesh   dated: Sun May 11 11:54:08 2014
         file name: ~ramesh/latest2.sh
          modified: no
         user name: ramesh   host name: xxx.xxx.edu
        process ID: 1466 (still running)
While opening file "latest2.sh"

파일에서 크게 바꾸지 않았기 때문에,

kill -9 1466

프로세스가 사라 졌는지 확인했습니다.

ps -aef | grep ramesh

그리고PID 1466거기에 없었습니다. 이제 파일을 다시 열었을 때 동일한 메시지가 표시되었습니다.

E325: ATTENTION
Found a swap file by the name ".latest2.sh.swp"
          owned by: ramesh   dated: Sun May 11 11:54:08 2014
         file name: ~ramesh/latest2.sh
          modified: no
         user name: ramesh   host name: xxx.xxx.edu
        process ID: 1466
While opening file "latest2.sh"

그러나 그 과정은아직 실행 중이 아닙니다상태.

이제, 에 관한 질문이 있습니다.PID용법. 에 따라위키피디아기입,

Unix에서 프로세스 ID는 일반적으로 0부터 시작하여 시스템마다 다른 최대값까지 순차적으로 할당됩니다. 이 한도에 도달하면 할당이 0에서 다시 시작되고 다시 증가합니다. 그러나 이 단계와 후속 단계에서는 여전히 프로세스에 할당된 PID를 건너뜁니다.

이제 사용 가능한 PID를 모두 사용했다고 가정하면PID 1466BE사용된또는건너뛰었습니다?

이미 죽였기 때문에 사용해야 한다고 생각합니다. 그러나 두 번째로 파일을 열려고 할 때에도 여전히 다음과 같은 내용이 표시됩니다.PID 1466.

이 경우 어떻게 될까요?

답변1

예, PID는 언제든지 재사용할 수 있습니다.

해당 출력에서 ​​볼 수 있는 것은 해당 .swp파일을 생성한 프로세스가 1466. 반드시 프로세스가 아직 진행 중이라는 의미는 아닙니다.
파일은 정적이라는 점을 기억하세요. 파일을 열었던 프로세스가 종료되었다고 해서 변경되지는 않습니다. 따라서 1466이 종료되면 파일에는 "PID 1466에 의해 편집되고 있었습니다"라는 정보가 계속 포함됩니다. VIM은 이 프로세스가 아직 살아 있는지 확인하고 로 표시합니다 (still running).

언급한 바와 같이, 다른 프로세스가 정확히 동일한 PID를 얻는 것이 가능합니다. 으로 보고할 때 (still running)VIM은 실제로 해당 PID가 VIM 프로세스인지 확인하지 않습니다.

E325: ATTENTION
Found a swap file by the name ".test.swp"
          owned by: root   dated: Sun May 11 17:04:36 2014
         file name: /tmp/test
          modified: no
         user name: root   host name: whistler
        process ID: 21824 (still running)
While opening file "test"
             dated: Sun May 11 17:04:36 2014

이 경우 PID 21824는 제가 시작한 쉘입니다.  

phemmer  21824  19   0  0.0  0.0 S+         00:53 bash -c [[ "$$" == 21824 ]] && echo MATCH && sleep 999999

관련 정보