プロセスが完了した後、ロック ファイルが削除されていないことがわかります。flock
ファイルを保持する理由はありますか? また、flock
ロックが取得されたかどうかはどのようにしてわかりますか?
crontab
これはファイルからの例です
* * * * * flock python <script_name>.py
答え1
のほとんどの使用例ではflock
、ロックファイルがない「クリーンアップ」する必要があります。そうでない場合は、次のシナリオを想像してください。
- プロセス A はロック ファイルを開き、存在しないことがわかったので、ロック ファイルを作成します。
- プロセスAがロックを取得する
- プロセスBがロックを開く(すでに存在することがわかる)
- プロセスBはロックを取得しようとするが、待たなければならない
- プロセスAがロックを解除する
- プロセスBは即座にロックを取得する
- プロセスAはロックファイルを削除する
- プロセスCはロックファイルを開き、存在しないことがわかったので、新しいファイルを作成します。現在、ロックファイルを保持していることに注意してください。違うプロセス B がロックしたロック ファイル。
- プロセス C はロックの取得を試み、成功しました...しかし、プロセス B がまだロック ファイルを開いてロックしているため、待機する必要がありました。