У меня был файл, открытый с помощью 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
иПИД 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"
Однако процесс былне в еще работаетсостояние.
Теперь у меня есть вопрос по поводуПИДиспользование. Согласновикипедиявход,
В Unix идентификаторы процессов обычно выделяются последовательно, начиная с 0 и увеличиваясь до максимального значения, которое варьируется от системы к системе. После достижения этого предела выделение перезапускается с нуля и снова увеличивается. Однако для этого и последующих проходов любые PID, все еще назначенные процессам, пропускаются.
Теперь, предположим, что я использовал все доступные PID, будет лиПИД 1466бытьиспользовалилипропущено?
Поскольку я уже убил его, я предполагаю, что его следует использовать. Однако при второй попытке открыть файл я все еще вижуПИД 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