Ich habe eine Datei mit dem Editor geöffnet vim
. Sie befand sich in einer ssh
Sitzung und da ich lange Zeit untätig war, wurde die Sitzung geschlossen und ich musste die Verbindung erneut herstellen. Ich öffnete die Datei erneut mit dem vim
Editor und es wurde mir gemeldet:
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"
Da ich nicht viel an der Datei geändert habe, habe ich
kill -9 1466
Ich habe überprüft, ob der Prozess beendet ist, indem ich
ps -aef | grep ramesh
UndPID 1466war nicht da. Als ich die Datei nun erneut öffnete, erhielt ich die gleiche Meldung,
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"
Der Prozess war jedochnicht in läuft nochZustand.
Nun habe ich eine Frage zumPIDNutzung. Gemäß derWikipediaEintrag,
Unter Unix werden Prozess-IDs normalerweise sequenziell zugewiesen, beginnend bei 0 und ansteigend bis zu einem Maximalwert, der von System zu System unterschiedlich ist. Sobald dieser Grenzwert erreicht ist, beginnt die Zuweisung wieder bei 0 und steigt erneut an. Bei diesem und den folgenden Durchläufen werden jedoch alle PIDs, die noch Prozessen zugewiesen sind, übersprungen.
Wenn ich nun alle verfügbaren PIDs aufgebraucht habe, wird derPID 1466Seigebrauchtoderübersprungen?
Da ich es bereits beendet habe, gehe ich davon aus, dass es verwendet werden sollte. Bei meinem zweiten Versuch, die Datei zu öffnen, sehe ich jedoch immer noch dasPID 1466.
Was passiert in diesem Fall?
Antwort1
Ja, PIDs können jederzeit wiederverwendet werden.
Was Sie in dieser Ausgabe sehen, ist, dass der Prozess, der diese .swp
Datei erstellt hat, war 1466
. Das bedeutet nicht unbedingt, dass dieser Prozess noch existiert.
Denken Sie daran, dass die Datei statisch ist und sich nicht ändert, nur weil der Prozess, der sie geöffnet hat, beendet wurde. Wenn also 1466 beendet wird, enthält die Datei immer noch die Information, dass „Ich wurde von PID 1466 bearbeitet“. VIM prüft, ob dieser Prozess noch aktiv ist und zeigt ihn als an (still running)
.
Wie erwähnt ist es möglich, dass ein anderer Prozess genau dieselbe PID erhält. Beim Berichten als (still running)
prüft VIM nicht, ob es sich bei dieser PID um einen VIM-Prozess handelt.
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
In diesem Fall ist PID 21824 eine Shell, die ich gestartet habe.
phemmer 21824 19 0 0.0 0.0 S+ 00:53 bash -c [[ "$$" == 21824 ]] && echo MATCH && sleep 999999