Lock

為什麼flock不清理鎖文件?

  • June 1, 2017

處理完成後,我看到鎖定文件沒有被刪除?有什麼理由flock保留文件嗎?另外如何flock知道是否獲得了鎖?

這是來自crontab文件的範例

* * * * * flock python <script_name>.py

對於 的大多數案例,“清理”flock鎖定文件非常重要。否則,想像一下這種情況:

  • 程序A打開鎖文件,發現它不存在,於是創建它。
  • 程序A獲得鎖
  • 程序B打開鎖(發現已經存在)
  • 程序 B 嘗試獲取鎖但必須等待
  • 程序A釋放鎖
  • 程序 B 立即獲得鎖
  • 程序A刪除鎖文件
  • 程序C打開鎖文件,發現不存在,於是新建了一個。請注意,它現在正在打開一個不同的鎖定文件,該文件已被程序 B 鎖定。
  • 程序 C 嘗試獲取鎖並成功……但它應該不得不等待,因為程序 B 仍然有$$ a prior incarnation of $$鎖定文件打開並鎖定。

引用自:https://unix.stackexchange.com/questions/368159