強制終了した後も同じ PID が使用されますか?

強制終了した後も同じ PID が使用されますか?

エディタを使用してファイルを開きました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 では、プロセス ID は通常、0 から始まり、システムごとに異なる最大値まで順番に割り当てられます。この制限に達すると、割り当ては 0 から再開され、再び増加します。ただし、このパスと後続のパスでは、プロセスにまだ割り当てられている PID はスキップされます。

さて、利用可能なPIDをすべて使い切ったと仮定すると、1466番なれ使用済みまたはスキップ?

すでに削除したので、使用する必要があると思います。しかし、ファイルを開こうと2回目に試みても、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

関連情報