![为什么flock不清理锁文件?](https://linux22.com/image/112491/%E4%B8%BA%E4%BB%80%E4%B9%88flock%E4%B8%8D%E6%B8%85%E7%90%86%E9%94%81%E6%96%87%E4%BB%B6%EF%BC%9F%20.png)
处理完成后,我看到锁定文件没有被删除?有什么理由flock
保留该文件吗?另外如何flock
知道是否获取了锁?
crontab
这是文件中的示例
* * * * * flock python <script_name>.py
答案1
对于 的大多数用例flock
,锁定文件非常重要不是被“清理”。否则,想象一下这个场景:
- 进程A打开锁文件,发现它不存在,因此创建它。
- 进程A获得锁
- 进程B打开锁(发现已经存在)
- 进程B尝试获取锁但必须等待
- 进程A释放锁
- 进程B立即获取锁
- 进程A删除锁文件
- 进程C打开锁文件,发现它不存在,于是创建一个新的。请注意,它现在保持打开状态不同的进程 B 已锁定的文件。
- 进程 C 尝试获取锁并成功...但它应该必须等待,因为进程 B 仍然打开并锁定了锁文件[的先前版本]。