エディタを使用してファイルを開きました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