Cron
防止重複的 cron 作業執行
我已經安排了一個 cron 作業每分鐘執行一次,但有時腳本需要一分鐘以上才能完成,我不希望這些作業開始相互“堆疊”。我猜這是一個並發問題——即腳本執行需要互斥。
為了解決這個問題,我讓腳本查找是否存在特定文件(“ lockfile.txt ”),如果存在則退出,如果不存在
touch
則退出。但這是一個非常糟糕的信號量!是否有我應該知道的最佳實踐?我應該寫一個守護程序嗎?
有幾個程序可以自動執行此功能,消除您自己執行此操作的煩惱和潛在錯誤,並通過在幕後使用羊群來避免過時的鎖定問題(如果您只是使用觸摸,這是一個風險) . 我過去使用過
lockrun
和lckdo
,但現在有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