回答:
pidファイルは、起動中にプロセスIDを記録するためにいくつかのプログラムによって書き込まれます。これには複数の目的があります。
kill
終了する場合は単純なコマンドを発行できます。pidファイルが存在するだけでは、特定のプロセスIDが実行されていることはもちろん保証されないため、このメソッドは100%確実なわけではなく、多くの場合「十分」です。特定のPIDがプロセステーブルに存在するかどうかを確認することは、ps
ユーティリティに依存する場合を除き、UNIXライクなオペレーティングシステム間で完全に移植可能ではありません。ps
とにかく別の方法で実装します)。
ロックファイルはプログラムによって使用され、1つのシステムで同時に実行されている可能性のあるプログラムの2つの(正常に動作する)個別のインスタンスが同時に他の何かにアクセスしないようにします。このアイデアは、プログラムがリソースにアクセスする前に、ロックファイルの存在をチェックし、ロックファイルが存在する場合はエラーになるか、なくなるのを待ちます。存在しない場合、リソースを「取得」したいプログラムがファイルを作成し、後で出くわす可能性のある他のインスタンスがこのプロセスが完了するまで待機します。もちろん、これは、ロックを「獲得」するプログラムが実際にそれを解放し、ロックファイルを削除することを忘れないことを前提としています。
これは、すべてのUNIXライクなオペレーティングシステムのファイルシステムがシリアル化を実施するために機能します。つまり、ファイルシステムへの変更は常に1回だけです。データベースなどと同様のロックの並べ替え。
これらのファイルは多くの場合、システム上で一度だけ実行されるデーモンによって使用されます。PIDファイルには、通常、すでに起動され実行中のプログラムが存在する場合、そのプロセスID番号が含まれます。また、起動時にロックファイルを作成します。ロックファイルが存在する限り、ユーザーの介入なしに別のロックファイルを起動することはありません。ロックファイルが存在し、pidファイルに記述されているプロセスIDが実行されていない場合、デーモンは「デッド」状態であると見なされます。つまり、実行されているはずですが、クラッシュまたは不適切なシャットダウンが原因ではない可能性があります。これにより、一部のプログラムで特別な起動/再起動のシナリオが開始される場合があります。適切にシャットダウンすると、ロックファイルが削除されます。
PIDファイルには、実行中のプロセスのプロセスIDが含まれます。これにはさまざまな用途があります。それを読んでプロセスがまだ実行中であることを確認して適切なアクションを実行するか、それを読んでプロセスを強制終了することができます。
ロックファイルは、おそらくアプリケーション固有のものです。ロックファイルは、一部のリソースが使用中であり、アクセスを必要とするプロセスがリソースが解放されるまで待機してから続行することを示すために使用されます。
.lck
、VMのディレクトリ内のファイルを削除する必要があります。削除しないと、起動しようとしたときに使用中であることがわかります。