Cron

防止重複的 cron 作業執行

  • May 19, 2021

我已經安排了一個 cron 作業每分鐘執行一次,但有時腳本需要一分鐘以上才能完成,我不希望這些作業開始相互“堆疊”。我猜這是一個並發問題——即腳本執行需要互斥。

為了解決這個問題,我讓腳本查找是否存在特定文件(“ lockfile.txt ”),如果存在則退出,如果不存在touch則退出。但這是一個非常糟糕的信號量!是否有我應該知道的最佳實踐?我應該寫一個守護程序嗎?

有幾個程序可以自動執行此功能,消除您自己執行此操作的煩惱和潛在錯誤,並通過在幕後使用羊群來避免過時的鎖定問題(如果您只是使用觸摸,這是一個風險) . 我過去使用過lockrunlckdo,但現在有flock(1)(在 util-linux 的新版本中)很棒。它真的很容易使用:

* * * * * /usr/bin/flock -n /tmp/fcj.lockfile /usr/local/bin/frequent_cron_job

shell中最好的方法是使用flock(1)

(
 flock -x -w 5 99
 ## Do your stuff here
) 99>/path/to/my.lock

引用自:https://serverfault.com/questions/82857