エディタを使用してファイルを開きました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
そしてPID 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"
しかし、その過程はもう実行されません。状態。
今質問があります。PID使用法。 ~によるとウィキペディア入り口、
Unixでは、プロセスIDは通常0から始まり、最大値まで順番に割り当てられます。これはシステムによって異なります。この制限に達すると、割り当てはゼロから再開され、再び増加します。ただし、このパスの後続のパスでは、まだプロセスに割り当てられているすべてのPIDをスキップします。
今、利用可能なすべてのPIDを使い果たしたと仮定すると、PID 1466はい使用されるまたは飛び越える?
もう殺されたから使うべきだと思いました。しかし、2番目にファイルを開こうとしてもPID 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