我使用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"
Run Code Online (Sandbox Code Playgroud)
由于我没有对文件进行太多更改,所以我做了,
kill -9 1466
Run Code Online (Sandbox Code Playgroud)
我检查了这个过程是否消失了,
ps -aef | grep ramesh
Run Code Online (Sandbox Code Playgroud)
和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"
Run Code Online (Sandbox Code Playgroud)
但是,该进程并未处于仍在运行状态。
现在,我有一个关于PID使用的问题。根据维基百科条目,
在 Unix 下,进程 ID 通常是按顺序分配的,从 0 开始并上升到最大值,该值因系统而异。一旦达到此限制,分配将从零重新开始并再次增加。但是,对于本次和后续的传递,仍然分配给进程的任何 PID 都将被跳过。
现在,假设我已经用完了所有可用的 PID,是否会使用或跳过PID 1466?
因为,我已经杀死了它,我认为它应该被使用。但是,在我第二次尝试打开文件时,我仍然看到PID 1466。
在这种情况下会发生什么?
phe*_*mer 10
是的,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
Run Code Online (Sandbox Code Playgroud)
在这种情况下,PID 21824 是我启动的一个 shell。
phemmer 21824 19 0 0.0 0.0 S+ 00:53 bash -c [[ "$$" == 21824 ]] && echo MATCH && sleep 999999
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2115 次 |
| 最近记录: |