wird nach dem Kill dieselbe PID verwendet?

wird nach dem Kill dieselbe PID verwendet?

Ich habe eine Datei mit dem Editor geöffnet vim. Sie befand sich in einer sshSitzung 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 vimEditor 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 .swpDatei 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

verwandte Informationen