I had a file opened using vim
editor. It was in a ssh
session and since I had been idle for a long time, the session got closed and I had to establish the connection again. I opened the file again using vim
editor and it reported me saying,
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"
Since I did not change much in the file, I did,
kill -9 1466
I checked if the process is gone using,
ps -aef | grep ramesh
and PID 1466 was not there. Now, when I opened the file again, it gave me the same message,
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"
However the process was not in still running state.
Now, I have a question regarding the PID usage. As per the wikipedia entry,
Under Unix, process IDs are usually allocated on a sequential basis, beginning at 0 and rising to a maximum value which varies from
system to system. Once this limit is reached, allocation restarts at
zero and again increases. However, for this and subsequent passes any
PIDs still assigned to processes are skipped.
Now, assuming I have used up all the available PIDs, will the PID 1466 be used or skipped?
Since, I already killed it, I assume it should be used. However, in my second attempt to open the file I still see the PID 1466.
What will happen in this case?
Best Answer
Yes, PIDs can be reused at any time.
What you're seeing in that output is that the process that created that
.swp
file was1466
. It doesn't necessarily mean that process is still around.Remember that the file is static, it doesn't change just because the process which had it open died. So if 1466 is killed, the file still contains the information that said "I was being edited by PID 1466". VIM checks to see if this process is still alive and will indicate it as
(still running)
.As mentioned, it is possible for another process to get that exact same PID. When reporing as
(still running)
, VIM doesn't actually check that that PID is a VIM process.In this case, PID 21824 is a shell I launched.