linux flock命令解決linux定時任務重復執行問題


在做計划任務的時候,可能由於某些問題,任務沒有執行完成,導致任務重復的運行,解決這個問題,只需要一個flock命令就可以了。

flock --help
flock (util-linux-ng 2.17.2)
Usage: flock [-sxun][-w #] fd#
flock [-sxon][-w #] file [-c] command...
flock [-sxon][-w #] directory [-c] command...
-s --shared Get a shared lock #獲得一個共享鎖
-x --exclusive Get an exclusive lock #獲得一個獨占鎖,這是默認的
-u --unlock Remove a lock #刪除一個鎖,通常是不需要的,因為在文件關閉時鎖會自動刪除
-n --nonblock Fail rather than wait #如果沒有立即獲得鎖,直接失敗而不是等待
-w --timeout Wait for a limited amount of time #如果沒有立即獲得鎖,等待指定時間
-o --close Close file descriptor before running command #在執行命令之前關閉保持鎖的文件描述符
-c --command Run a single command string through the shell #在shell中運行一個單獨的命令
-h --help Display this text #顯示幫助
-V --version Display version #顯示版本

例:

執行一個定時腳本任務,每2分鍾跑一次,將沒有推送到外部系統的命令推送到外部系統,為了防止被多次推送的情況,所以需要控制並發,每次只能一個腳本任務在執行

具體實現 :

*/2 * * * * flock -xn /home/*/odp_ohs/data/BmsInvoicePushSap.lock -c '/home/*/odp_ohs/php/bin/php /home/work/odp_ohs/app/mc/script/invoice/PushInvoice2Sap.php'


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM