web-dev-qa-db-ja.com

pidfileは存在するがプロセスが見つからない場合、多くのプログラムが起動しないのはなぜですか?

Pidfileを書き込むプログラムがたくさんあり、起動時にその存在を確認します。そして、これは良いことです。しかし、多くのアプリケーションはpidfileが存在することを確認しても起動しませんが、そのpidのプロセスは実行されていません。

なぜこの動作ですか? pidfileを削除してユーザーに警告するのは、せいぜい簡単ではありませんか?

3
Marco Sulla

適切な手順は、pidfileの存在を確認し、存在する場合は、内部のpidが現在のプロセスを参照していないことを確認することです。 pidを持つプロセスがない場合は、pidfileを現在のプロセスのpidで再作成する必要があります。 pidfileを作成したプロセスが正常に終了しなかった場合(つまり、「ゾンビ」プロセスになった場合)、またはpidが再利用された場合(可能性が低い)、新しいプロセスは終了します。 pidfileが存在するためにプロセスが終了しますか、それとも他の理由が原因である可能性がありますか(失敗したプロセスが環境を無効な状態のままにした可能性があります)?

1
TMN