편집기를 사용하여 파일을 열었습니다 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