살해된 후에도 동일한 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 1466사용된또는뛰어 넘다?

이미 죽였으니 사용해야겠다는 생각이 들었습니다. 하지만 두 번째로 파일을 열려고 할 때에도 여전히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

관련 정보